diff --git a/.gitignore b/.gitignore index 8015250fd006f864a33ddfca9ef31cf0b80940f9..d92b2408600b3dabede036b511093012be8cbcbf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /info4/kapitel-*/.ipynb_checkpoints /info4/kapitel-*/exports +/info4/kapitel-*/*/__pycache__/ diff --git a/info4/kapitel-0/Logik.ipynb b/info4/kapitel-0/Logik.ipynb index 7ac1ca5af7d43b983235bd1c4788fc28aba3b593..4b4978fd637f5d1bad67fa3eff5bbe514179a232 100644 --- a/info4/kapitel-0/Logik.ipynb +++ b/info4/kapitel-0/Logik.ipynb @@ -12,7 +12,7 @@ "* Heinrich-Heine Universität Düsseldorf\n", "\n", "Grundlagen der Logik und Mengentheorie sind nicht im Skript.\n", - "Hier definieren wir einige Grundlagen und Notationen die im Skript verwendet werden.\n", + "Hier definieren wir einige Grundlagen und Notationen, die im Skript verwendet werden.\n", "Ein gutes Verständnis dieser Grundlagen und Notationen ist für das Verständnis des Skripts, aber auch anderer Teile der Informatik unumgänglich.\n", "\n", "Die Folien für diese Grundlagen sind als Jupyter Notebooks erstellt worden und im [Gitlab der Informatik](https://gitlab.cs.uni-duesseldorf.de/general/stups/prob-teaching-notebooks) erhältlich.\n" @@ -578,162 +578,162 @@ "<?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", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: g Pages: 1 -->\n", - "<svg width=\"373pt\" height=\"320pt\"\n", - " viewBox=\"0.00 0.00 373.00 320.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<svg width=\"396pt\" height=\"320pt\"\n", + " viewBox=\"0.00 0.00 396.00 320.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 316)\">\n", "<title>g</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"transparent\" points=\"-4,4 -4,-316 369,-316 369,4 -4,4\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-316 392,-316 392,4 -4,4\"/>\n", "<!-- Noderoot -->\n", "<g id=\"node1\" class=\"node\">\n", "<title>Noderoot</title>\n", - "<path fill=\"#b3ee3a\" stroke=\"#000000\" d=\"M42,-133.5C42,-133.5 12,-133.5 12,-133.5 6,-133.5 0,-127.5 0,-121.5 0,-121.5 0,-107.5 0,-107.5 0,-101.5 6,-95.5 12,-95.5 12,-95.5 42,-95.5 42,-95.5 48,-95.5 54,-101.5 54,-107.5 54,-107.5 54,-121.5 54,-121.5 54,-127.5 48,-133.5 42,-133.5\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-118.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">⇔</text>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.3\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">true</text>\n", + "<path fill=\"#b3ee3a\" stroke=\"black\" d=\"M42,-133.5C42,-133.5 12,-133.5 12,-133.5 6,-133.5 0,-127.5 0,-121.5 0,-121.5 0,-107.5 0,-107.5 0,-101.5 6,-95.5 12,-95.5 12,-95.5 42,-95.5 42,-95.5 48,-95.5 54,-101.5 54,-107.5 54,-107.5 54,-121.5 54,-121.5 54,-127.5 48,-133.5 42,-133.5\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-118.3\" font-family=\"Times,serif\" font-size=\"14.00\">⇔</text>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-103.3\" font-family=\"Times,serif\" font-size=\"14.00\">true</text>\n", "</g>\n", "<!-- Node1 -->\n", "<g id=\"node2\" class=\"node\">\n", "<title>Node1</title>\n", - "<path fill=\"#b3ee3a\" stroke=\"#000000\" d=\"M173,-188C173,-188 102,-188 102,-188 96,-188 90,-182 90,-176 90,-176 90,-147 90,-147 90,-141 96,-135 102,-135 102,-135 173,-135 173,-135 179,-135 185,-141 185,-147 185,-147 185,-176 185,-176 185,-182 179,-188 173,-188\"/>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-172.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">⇒</text>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">true</text>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-142.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">2 > 3 ⇒ 4 > 1</text>\n", + "<path fill=\"#b3ee3a\" stroke=\"black\" d=\"M194,-188C194,-188 102,-188 102,-188 96,-188 90,-182 90,-176 90,-176 90,-147 90,-147 90,-141 96,-135 102,-135 102,-135 194,-135 194,-135 200,-135 206,-141 206,-147 206,-147 206,-176 206,-176 206,-182 200,-188 194,-188\"/>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-172.8\" font-family=\"Times,serif\" font-size=\"14.00\">⇒</text>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">true</text>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-142.8\" font-family=\"Times,serif\" font-size=\"14.00\">2 > 3 ⇒ 4 > 1</text>\n", "</g>\n", "<!-- Node1->Noderoot -->\n", "<g id=\"edge1\" class=\"edge\">\n", "<title>Node1->Noderoot</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M89.9968,-141.295C81.0718,-137.4988 71.8716,-133.5857 63.3529,-129.9623\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"64.6477,-126.7096 54.0755,-126.0163 61.9078,-133.1512 64.6477,-126.7096\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M89.94,-138.96C80.94,-135.41 71.86,-131.82 63.53,-128.53\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"64.74,-125.25 54.15,-124.83 62.17,-131.76 64.74,-125.25\"/>\n", "</g>\n", "<!-- Node2 -->\n", "<g id=\"node3\" class=\"node\">\n", "<title>Node2</title>\n", - "<path fill=\"#ff6347\" stroke=\"#000000\" d=\"M263,-265C263,-265 233,-265 233,-265 227,-265 221,-259 221,-253 221,-253 221,-224 221,-224 221,-218 227,-212 233,-212 233,-212 263,-212 263,-212 269,-212 275,-218 275,-224 275,-224 275,-253 275,-253 275,-259 269,-265 263,-265\"/>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-249.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">></text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-234.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">false</text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-219.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">2 > 3</text>\n", + "<path fill=\"tomato\" stroke=\"black\" d=\"M286,-265C286,-265 254,-265 254,-265 248,-265 242,-259 242,-253 242,-253 242,-224 242,-224 242,-218 248,-212 254,-212 254,-212 286,-212 286,-212 292,-212 298,-218 298,-224 298,-224 298,-253 298,-253 298,-259 292,-265 286,-265\"/>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-249.8\" font-family=\"Times,serif\" font-size=\"14.00\">></text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-234.8\" font-family=\"Times,serif\" font-size=\"14.00\">false</text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-219.8\" font-family=\"Times,serif\" font-size=\"14.00\">2 > 3</text>\n", "</g>\n", "<!-- Node2->Node1 -->\n", "<g id=\"edge2\" class=\"edge\">\n", "<title>Node2->Node1</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M220.9687,-219.6637C209.963,-211.9946 196.9154,-202.9026 184.4453,-194.213\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"186.1423,-191.1296 175.9367,-188.2839 182.1402,-196.8727 186.1423,-191.1296\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M241.77,-221.03C229.17,-212.94 213.78,-203.07 199.2,-193.71\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"201.03,-190.73 190.73,-188.27 197.25,-196.62 201.03,-190.73\"/>\n", "</g>\n", "<!-- Node3 -->\n", "<g id=\"node4\" class=\"node\">\n", "<title>Node3</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-275.5 311,-311.5 365,-311.5 365,-275.5 311,-275.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-289.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">2</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-275.5 334,-311.5 388,-311.5 388,-275.5 334,-275.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-289.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- Node3->Node2 -->\n", "<g id=\"edge3\" class=\"edge\">\n", "<title>Node3->Node2</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-276.9982C302.5314,-271.8248 293.0484,-266.0296 284.0611,-260.5373\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.6529,-257.4083 275.295,-255.1803 282.0027,-263.3813 285.6529,-257.4083\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-277.3C325.39,-272.11 315.96,-266.29 307.01,-260.75\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"308.62,-257.63 298.27,-255.35 304.94,-263.59 308.62,-257.63\"/>\n", "</g>\n", "<!-- Node4 -->\n", "<g id=\"node5\" class=\"node\">\n", "<title>Node4</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-220.5 311,-256.5 365,-256.5 365,-220.5 311,-220.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-234.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">3</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-220.5 334,-256.5 388,-256.5 388,-220.5 334,-220.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-234.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- Node4->Node2 -->\n", "<g id=\"edge4\" class=\"edge\">\n", "<title>Node4->Node2</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-238.5C302.9723,-238.5 294.0335,-238.5 285.4691,-238.5\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.295,-235.0001 275.295,-238.5 285.2949,-242.0001 285.295,-235.0001\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-238.5C325.83,-238.5 316.94,-238.5 308.41,-238.5\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"308.27,-235 298.27,-238.5 308.27,-242 308.27,-235\"/>\n", "</g>\n", "<!-- Node5 -->\n", "<g id=\"node6\" class=\"node\">\n", "<title>Node5</title>\n", - "<path fill=\"#b3ee3a\" stroke=\"#000000\" d=\"M263,-188C263,-188 233,-188 233,-188 227,-188 221,-182 221,-176 221,-176 221,-147 221,-147 221,-141 227,-135 233,-135 233,-135 263,-135 263,-135 269,-135 275,-141 275,-147 275,-147 275,-176 275,-176 275,-182 269,-188 263,-188\"/>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-172.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">></text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">true</text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-142.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">4 > 1</text>\n", + "<path fill=\"#b3ee3a\" stroke=\"black\" d=\"M286,-188C286,-188 254,-188 254,-188 248,-188 242,-182 242,-176 242,-176 242,-147 242,-147 242,-141 248,-135 254,-135 254,-135 286,-135 286,-135 292,-135 298,-141 298,-147 298,-147 298,-176 298,-176 298,-182 292,-188 286,-188\"/>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-172.8\" font-family=\"Times,serif\" font-size=\"14.00\">></text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-157.8\" font-family=\"Times,serif\" font-size=\"14.00\">true</text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-142.8\" font-family=\"Times,serif\" font-size=\"14.00\">4 > 1</text>\n", "</g>\n", "<!-- Node5->Node1 -->\n", "<g id=\"edge5\" class=\"edge\">\n", "<title>Node5->Node1</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M220.9687,-161.5C213.1697,-161.5 204.3453,-161.5 195.4276,-161.5\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"195.3694,-158.0001 185.3694,-161.5 195.3694,-165.0001 195.3694,-158.0001\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M241.77,-161.5C234.03,-161.5 225.25,-161.5 216.24,-161.5\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"216.02,-158 206.02,-161.5 216.02,-165 216.02,-158\"/>\n", "</g>\n", "<!-- Node6 -->\n", "<g id=\"node7\" class=\"node\">\n", "<title>Node6</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-165.5 311,-201.5 365,-201.5 365,-165.5 311,-165.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-179.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">4</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-165.5 334,-201.5 388,-201.5 388,-165.5 334,-165.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-179.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- Node6->Node5 -->\n", "<g id=\"edge6\" class=\"edge\">\n", "<title>Node6->Node5</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-176.8993C302.8842,-174.9161 293.8369,-172.7046 285.1869,-170.5901\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.8401,-167.1468 275.295,-168.1721 284.1779,-173.9466 285.8401,-167.1468\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-177.02C325.74,-175.03 316.75,-172.81 308.13,-170.68\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"308.82,-167.24 298.27,-168.24 307.14,-174.04 308.82,-167.24\"/>\n", "</g>\n", "<!-- Node7 -->\n", "<g id=\"node8\" class=\"node\">\n", "<title>Node7</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-110.5 311,-146.5 365,-146.5 365,-110.5 311,-110.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">1</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-110.5 334,-146.5 388,-146.5 388,-110.5 334,-110.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- Node7->Node5 -->\n", "<g id=\"edge7\" class=\"edge\">\n", "<title>Node7->Node5</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-138.4011C302.796,-141.4081 293.6401,-144.7653 284.905,-147.9682\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"283.4788,-144.7632 275.295,-151.4918 285.8887,-151.3353 283.4788,-144.7632\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-138.22C325.66,-141.23 316.55,-144.61 307.85,-147.84\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"306.43,-144.63 298.27,-151.39 308.86,-151.19 306.43,-144.63\"/>\n", "</g>\n", "<!-- Node8 -->\n", "<g id=\"node9\" class=\"node\">\n", "<title>Node8</title>\n", - "<path fill=\"#b3ee3a\" stroke=\"#000000\" d=\"M157,-106C157,-106 118,-106 118,-106 112,-106 106,-100 106,-94 106,-94 106,-65 106,-65 106,-59 112,-53 118,-53 118,-53 157,-53 157,-53 163,-53 169,-59 169,-65 169,-65 169,-94 169,-94 169,-100 163,-106 157,-106\"/>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-90.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">¬</text>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-75.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">true</text>\n", - "<text text-anchor=\"middle\" x=\"137.5\" y=\"-60.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">¬(5 < 1)</text>\n", + "<path fill=\"#b3ee3a\" stroke=\"black\" d=\"M175,-106C175,-106 121,-106 121,-106 115,-106 109,-100 109,-94 109,-94 109,-65 109,-65 109,-59 115,-53 121,-53 121,-53 175,-53 175,-53 181,-53 187,-59 187,-65 187,-65 187,-94 187,-94 187,-100 181,-106 175,-106\"/>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-90.8\" font-family=\"Times,serif\" font-size=\"14.00\">¬</text>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-75.8\" font-family=\"Times,serif\" font-size=\"14.00\">true</text>\n", + "<text text-anchor=\"middle\" x=\"148\" y=\"-60.8\" font-family=\"Times,serif\" font-size=\"14.00\">¬(5 < 1)</text>\n", "</g>\n", "<!-- Node8->Noderoot -->\n", "<g id=\"edge8\" class=\"edge\">\n", "<title>Node8->Noderoot</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M105.8351,-89.5296C92.6976,-93.6908 77.3698,-98.5458 63.7409,-102.8626\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"62.6492,-99.5369 54.1729,-105.8932 64.763,-106.2102 62.6492,-99.5369\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M108.69,-90.77C94.37,-94.98 78.16,-99.75 64.04,-103.9\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"62.8,-100.62 54.2,-106.8 64.78,-107.33 62.8,-100.62\"/>\n", "</g>\n", "<!-- Node9 -->\n", "<g id=\"node10\" class=\"node\">\n", "<title>Node9</title>\n", - "<path fill=\"#ff6347\" stroke=\"#000000\" d=\"M263,-100C263,-100 233,-100 233,-100 227,-100 221,-94 221,-88 221,-88 221,-59 221,-59 221,-53 227,-47 233,-47 233,-47 263,-47 263,-47 269,-47 275,-53 275,-59 275,-59 275,-88 275,-88 275,-94 269,-100 263,-100\"/>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-84.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\"><</text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">false</text>\n", - "<text text-anchor=\"middle\" x=\"248\" y=\"-54.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">5 < 1</text>\n", + "<path fill=\"tomato\" stroke=\"black\" d=\"M286,-100C286,-100 254,-100 254,-100 248,-100 242,-94 242,-88 242,-88 242,-59 242,-59 242,-53 248,-47 254,-47 254,-47 286,-47 286,-47 292,-47 298,-53 298,-59 298,-59 298,-88 298,-88 298,-94 292,-100 286,-100\"/>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-84.8\" font-family=\"Times,serif\" font-size=\"14.00\"><</text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">false</text>\n", + "<text text-anchor=\"middle\" x=\"270\" y=\"-54.8\" font-family=\"Times,serif\" font-size=\"14.00\">5 < 1</text>\n", "</g>\n", "<!-- Node9->Node8 -->\n", "<g id=\"edge9\" class=\"edge\">\n", "<title>Node9->Node8</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M220.9687,-74.9678C208.5454,-75.6423 193.5202,-76.4582 179.6609,-77.2107\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"179.1478,-73.7333 169.3523,-77.7705 179.5274,-80.723 179.1478,-73.7333\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M241.77,-74.86C228.62,-75.52 212.45,-76.33 197.31,-77.08\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"196.85,-73.6 187.04,-77.6 197.2,-80.59 196.85,-73.6\"/>\n", "</g>\n", "<!-- Node10 -->\n", "<g id=\"node11\" class=\"node\">\n", "<title>Node10</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-55.5 311,-91.5 365,-91.5 365,-55.5 311,-55.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">5</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-55.5 334,-91.5 388,-91.5 388,-55.5 334,-55.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- Node10->Node9 -->\n", "<g id=\"edge10\" class=\"edge\">\n", "<title>Node10->Node9</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-73.5C302.9723,-73.5 294.0335,-73.5 285.4691,-73.5\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"285.295,-70.0001 275.295,-73.5 285.2949,-77.0001 285.295,-70.0001\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-73.5C325.83,-73.5 316.94,-73.5 308.41,-73.5\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"308.27,-70 298.27,-73.5 308.27,-77 308.27,-70\"/>\n", "</g>\n", "<!-- Node11 -->\n", "<g id=\"node12\" class=\"node\">\n", "<title>Node11</title>\n", - "<polygon fill=\"#ffffff\" stroke=\"#000000\" points=\"311,-.5 311,-36.5 365,-36.5 365,-.5 311,-.5\"/>\n", - "<text text-anchor=\"middle\" x=\"338\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\" fill=\"#000000\">1</text>\n", + "<polygon fill=\"white\" stroke=\"black\" points=\"334,-0.5 334,-36.5 388,-36.5 388,-0.5 334,-0.5\"/>\n", + "<text text-anchor=\"middle\" x=\"361\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- Node11->Node9 -->\n", "<g id=\"edge11\" class=\"edge\">\n", "<title>Node11->Node9</title>\n", - "<path fill=\"none\" stroke=\"#000000\" d=\"M310.997,-35.0018C302.5314,-40.1752 293.0484,-45.9704 284.0611,-51.4627\"/>\n", - "<polygon fill=\"#000000\" stroke=\"#000000\" points=\"282.0027,-48.6187 275.295,-56.8197 285.6529,-54.5917 282.0027,-48.6187\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M333.78,-34.7C325.39,-39.89 315.96,-45.71 307.01,-51.25\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"304.94,-48.41 298.27,-56.65 308.62,-54.37 304.94,-48.41\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -800,7 +800,7 @@ "\n", "Man nennt so eine Interpretation ein <b>Modell</b> für die Formel.\n", "\n", - "* eine Interpretation $i$ so dass $i(\\phi)={\\color{olive} TRUE}$ ist ein <b>Modell</b> für $\\phi$\n", + "* eine Interpretation $i$ so dass $i(\\phi)={\\color{olive}{TRUE}}$ ist ein <b>Modell</b> für $\\phi$\n", "* eine Formel $\\phi$ die mindestens ein Modell hat heißt <b>erfüllbar</b>\n", "* eine Formel $\\phi$ wo alle Interpretationen auch Modelle sind wird eine <b>Tautologie</b> genannt\n", "* eine Formel ohne Modell heißt <b>unerfüllbar</b> oder ein Widerspruch\n", diff --git a/info4/kapitel-0/Mengentheorie.ipynb b/info4/kapitel-0/Mengentheorie.ipynb index cd73a13428dc225e0be1c84c57601b035653c93b..327f7097067fc1ec4b644dddf357d7555396426a 100644 --- a/info4/kapitel-0/Mengentheorie.ipynb +++ b/info4/kapitel-0/Mengentheorie.ipynb @@ -5,15 +5,17 @@ "metadata": {}, "source": [ "# Theoretische Informatik - Vorlesung 0 - Teil 2 Mengentheorie\n", - "April 2020\n", - "Michael Leuschel\n", - "Heinrich-Heine Universität Düsseldorf\n", + "\n", + "* April 2020\n", + "* Michael Leuschel\n", + "* Lehrstuhl Softwaretechnik und Programmiersprachen\n", + "* Heinrich-Heine Universität Düsseldorf\n", "\n", "Grundlagen der Logik und Mengentheorie sind nicht im Skript.\n", "Hier definieren wir einige Grundlagen und Notationen die im Skript verwendet werden.\n", "Ein gutes Verständnis dieser Grundlagen und Notationen ist für das Verständnis des Skripts, aber auch anderer Teile der Informatik unumgänglich.\n", "\n", - "Auswertung der Formeln erfolgt mit dem [Jupyter kernel](https://gitlab.cs.uni-duesseldorf.de/general/stups/prob2-jupyter-kernel) für [ProB](https://www3.hhu.de/stups/prob)\n", + "Auswertung der Formeln erfolgt mit dem [Jupyter Kernel](https://gitlab.cs.uni-duesseldorf.de/general/stups/prob2-jupyter-kernel) für [ProB](https://www3.hhu.de/stups/prob)\n", "\n", "\n", "Um dieses Notebook zu starten kann man entweder selber Jupyter und den [ProB Kernel](https://gitlab.cs.uni-duesseldorf.de/general/stups/prob2-jupyter-kernel) installieren.\n", @@ -62,13 +64,13 @@ "Sie hat keine Elemente:\n", " * $z = \\emptyset \\Leftrightarrow \\forall(a).(a\\not\\in z)$\n", "\n", - "Zwei Mengen $x$ und $y$ sind gleich gdw wenn sie die gleichen Elemente haben:\n", + "Zwei Mengen $x$ und $y$ sind gleich gdw sie die gleichen Elemente haben:\n", " * $\\forall(x,y).(x=y \\Leftrightarrow \\forall(a).(a\\in x \\Leftrightarrow a \\in y))$" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -80,7 +82,7 @@ "FALSE" ] }, - "execution_count": 17, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -91,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -103,7 +105,7 @@ "FALSE" ] }, - "execution_count": 18, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -114,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -126,7 +128,7 @@ "TRUE" ] }, - "execution_count": 19, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -147,7 +149,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -159,7 +161,7 @@ "TRUE" ] }, - "execution_count": 20, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -177,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -189,7 +191,7 @@ "FALSE" ] }, - "execution_count": 22, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -200,7 +202,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -212,7 +214,7 @@ "FALSE" ] }, - "execution_count": 23, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -230,7 +232,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -242,7 +244,7 @@ "TRUE" ] }, - "execution_count": 24, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -271,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -283,7 +285,7 @@ "{2,3,5,7}" ] }, - "execution_count": 25, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -294,7 +296,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -306,7 +308,7 @@ "{5}" ] }, - "execution_count": 26, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -329,7 +331,7 @@ "{2,3}" ] }, - "execution_count": 27, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -351,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -363,7 +365,7 @@ "{2,3,5}" ] }, - "execution_count": 28, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -381,7 +383,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -393,7 +395,7 @@ "{a∣a > 10}" ] }, - "execution_count": 29, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -404,7 +406,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -416,7 +418,7 @@ "{2}" ] }, - "execution_count": 30, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -438,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -460,7 +462,7 @@ "\ty = {2,5}" ] }, - "execution_count": 31, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -471,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -493,7 +495,7 @@ "\ty = {2,5}" ] }, - "execution_count": 32, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -504,7 +506,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -526,7 +528,7 @@ "\ty = {2,5}" ] }, - "execution_count": 33, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -544,7 +546,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -556,7 +558,7 @@ "{1,2,3,4,5,6,7,8,9,10}" ] }, - "execution_count": 34, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -579,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -591,7 +593,7 @@ "{2,3,44,55}" ] }, - "execution_count": 35, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -602,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -614,7 +616,7 @@ "{2,3,44,55}" ] }, - "execution_count": 36, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -668,7 +670,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -680,7 +682,7 @@ "{1,3,7,9}" ] }, - "execution_count": 37, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -691,7 +693,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -703,7 +705,7 @@ "{1,3,5,7,9,10}" ] }, - "execution_count": 38, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -714,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -726,7 +728,7 @@ "{1,2,3,4,6,7,8,9}" ] }, - "execution_count": 39, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -737,7 +739,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -749,7 +751,7 @@ "{1,3,7,9}" ] }, - "execution_count": 40, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -779,9 +781,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$" + ], + "text/plain": [ + "∅" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "{2,4} ∩ (ℤ \\ {2,4})" ] @@ -797,7 +813,7 @@ "* $\\forall a. a\\in x \\Rightarrow a \\in y$\n", "\n", "Wir benutzen diese Schreibweise $x \\subseteq y$.\n", - "In diesem Fall ist $y$ auch eine Obermenge von $y$, geschrieben als $y \\supseteq x$.\n", + "In diesem Fall ist $y$ auch eine Obermenge von $x$, geschrieben als $y \\supseteq x$.\n", "\n", "Für die echte Teilmenge benutzen wir folgende Schreibweise und Definition:\n", "* $x \\subset y$ $\\Leftrightarrow$ $(x \\subseteq y \\wedge x\\neq y)$." @@ -805,7 +821,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -825,7 +841,7 @@ "\ty = (1 ‥ 5)" ] }, - "execution_count": 41, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -836,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -848,7 +864,7 @@ "FALSE" ] }, - "execution_count": 42, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -859,7 +875,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -871,7 +887,7 @@ "TRUE" ] }, - "execution_count": 43, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -892,7 +908,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -904,7 +920,7 @@ "3" ] }, - "execution_count": 44, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -915,7 +931,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -927,7 +943,7 @@ "3" ] }, - "execution_count": 45, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -938,7 +954,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -950,7 +966,7 @@ "0" ] }, - "execution_count": 46, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -968,7 +984,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1015,7 +1031,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1047,7 +1063,7 @@ "\tO = 0" ] }, - "execution_count": 48, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1065,7 +1081,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1097,7 +1113,7 @@ "\tO = 3" ] }, - "execution_count": 49, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1116,7 +1132,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1148,7 +1164,7 @@ "\tO = 4" ] }, - "execution_count": 50, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1167,7 +1183,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1199,7 +1215,7 @@ "\tO = 0" ] }, - "execution_count": 51, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1220,7 +1236,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1232,7 +1248,7 @@ "{(9↦5↦6↦7↦1↦0↦8↦2)}" ] }, - "execution_count": 52, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1248,7 +1264,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1263,7 +1279,7 @@ "9\t5\t6\t7\t1\t0\t8\t2\n" ] }, - "execution_count": 53, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1300,7 +1316,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1315,7 +1331,7 @@ "2\t0\t3\t4\t1\t8\t9\n" ] }, - "execution_count": 54, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1353,7 +1369,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1365,7 +1381,7 @@ "3" ] }, - "execution_count": 55, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1376,7 +1392,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1388,7 +1404,7 @@ "1" ] }, - "execution_count": 56, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1399,7 +1415,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1411,7 +1427,7 @@ "2" ] }, - "execution_count": 57, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1422,7 +1438,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1434,7 +1450,7 @@ "TRUE" ] }, - "execution_count": 58, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1445,7 +1461,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1457,7 +1473,7 @@ "FALSE" ] }, - "execution_count": 59, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1478,7 +1494,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1490,7 +1506,7 @@ "FALSE" ] }, - "execution_count": 60, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1501,7 +1517,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1513,7 +1529,7 @@ "0" ] }, - "execution_count": 61, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1524,7 +1540,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1536,7 +1552,7 @@ "1" ] }, - "execution_count": 62, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1547,7 +1563,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1559,7 +1575,7 @@ "TRUE" ] }, - "execution_count": 63, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1570,7 +1586,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1582,7 +1598,7 @@ "FALSE" ] }, - "execution_count": 64, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1593,7 +1609,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1605,7 +1621,7 @@ "TRUE" ] }, - "execution_count": 65, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1624,7 +1640,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -1636,7 +1652,7 @@ "{∅,{1},{1,2},{2}}" ] }, - "execution_count": 66, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1647,7 +1663,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -1659,7 +1675,7 @@ "{∅}" ] }, - "execution_count": 67, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1670,7 +1686,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -1682,7 +1698,7 @@ "{∅,{1},{1,2},{1,3},{2},{1,2,3},{2,3},{3}}" ] }, - "execution_count": 68, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -1693,7 +1709,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1722,7 +1738,7 @@ "{3}\n" ] }, - "execution_count": 69, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1733,7 +1749,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -1754,7 +1770,7 @@ "{{1}}\n" ] }, - "execution_count": 70, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1765,7 +1781,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1777,7 +1793,7 @@ "8" ] }, - "execution_count": 71, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1788,7 +1804,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1800,7 +1816,7 @@ "1024" ] }, - "execution_count": 72, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1811,7 +1827,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -1823,7 +1839,7 @@ "1267650600228229401496703205376" ] }, - "execution_count": 73, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1834,7 +1850,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -1846,7 +1862,7 @@ "340282366920938463463374607431768211456" ] }, - "execution_count": 74, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -1857,7 +1873,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -1869,7 +1885,7 @@ "115792089237316195423570985008687907853269984665640564039457584007913129639936" ] }, - "execution_count": 75, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1915,7 +1931,7 @@ "## Relationen vs Prädikate\n", "Eine Relation ist die explizite Darstellung eines Prädikats als Menge:\n", " \n", - "* Prädikate können mit logischen Junktoren und Quantoren verarabeitet werden:\n", + "* Prädikate können mit logischen Junktoren und Quantoren verarbeitet werden:\n", " * $\\exists x. is\\_rich(x)$, $\\forall x.(is\\_poor(x) \\Rightarrow \\neg is\\_rich(x))$\n", " \n", "* Relationen können mit mengentheoretischen Operationen verarbeitet werden:\n", @@ -1938,7 +1954,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -1950,7 +1966,7 @@ "{(1↦4),(1↦5),(2↦4),(2↦5)}" ] }, - "execution_count": 78, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -1961,7 +1977,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -1973,7 +1989,7 @@ "{(1↦4),(2↦4)}" ] }, - "execution_count": 79, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -1984,7 +2000,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -1996,7 +2012,7 @@ "{(1↦FALSE),(1↦TRUE),(2↦FALSE),(2↦TRUE)}" ] }, - "execution_count": 80, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -2007,7 +2023,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -2019,7 +2035,7 @@ "{(1↦1),(1↦2),(1↦3),(2↦1),(2↦2),(2↦3),(3↦1),(3↦2),(3↦3)}" ] }, - "execution_count": 81, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -2030,7 +2046,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -2042,7 +2058,7 @@ "100" ] }, - "execution_count": 82, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -2060,7 +2076,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -2072,7 +2088,7 @@ "{(2↦3)}" ] }, - "execution_count": 83, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -2083,7 +2099,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -2095,7 +2111,7 @@ "{(3↦2)}" ] }, - "execution_count": 86, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -2126,7 +2142,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -2138,7 +2154,7 @@ "{(0↦1),(0↦2),(0↦3),(0↦4),(0↦5),(0↦6),(0↦7),(0↦8),(0↦9),(1↦2),(1↦3),(1↦4),(1↦5),(1↦6),(1↦7),(1↦8),(1↦9),(2↦3),(2↦4),(2↦5),(2↦6),(2↦7),(2↦8),(2↦9),(3↦4),(3↦5),(3↦6),(3↦7),(3↦8),(3↦9),(4↦5),(4↦6),(4↦7),(4↦8),(4↦9),(5↦6),(5↦7),(5↦8),(5↦9),(6↦7),(6↦8),(6↦9),(7↦8),(7↦9),(8↦9)}" ] }, - "execution_count": 87, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -2157,7 +2173,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -2169,7 +2185,7 @@ "{(2↦1),(4↦2),(6↦3),(8↦4),(10↦5)}" ] }, - "execution_count": 88, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -2187,7 +2203,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -2196,83 +2212,96 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"206pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 206.00 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"210pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 210.00 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 203,-310 203,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 206,-301 206,4 -4,4\"/>\n", "<!-- 10 -->\n", - "<g id=\"node1\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-306 0,-306 0,-270 54,-270 54,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-297 0,-297 0,-261 54,-261 54,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node3\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-269.614C27,-257.24 27,-240.369 27,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-226.05 27,-216.05 23.5001,-226.05 30.5001,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"39.0526\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-260.8C27,-249.16 27,-233.55 27,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-220.18 27,-210.18 23.5,-220.18 30.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"42.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", "</g>\n", "<!-- 8 -->\n", - "<g id=\"node4\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-306 72,-306 72,-270 126,-270 126,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-297 72,-297 72,-261 126,-261 126,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node6\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-216 72,-216 72,-180 126,-180 126,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-210 72,-210 72,-174 126,-174 126,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-269.614C99,-257.24 99,-240.369 99,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-226.05 99,-216.05 95.5001,-226.05 102.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"111.053\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-260.8C99,-249.16 99,-233.55 99,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-220.18 99,-210.18 95.5,-220.18 102.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"114.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node11\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-126 72,-126 72,-90 126,-90 126,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-179.614C99,-167.24 99,-150.369 99,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-136.05 99,-126.05 95.5001,-136.05 102.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"111.053\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-173.8C99,-162.16 99,-146.55 99,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-133.18 99,-123.18 95.5,-133.18 102.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"114.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node7\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-306 144,-306 144,-270 198,-270 198,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-297 144,-297 144,-261 198,-261 198,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node9\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-216 144,-216 144,-180 198,-180 198,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-210 144,-210 144,-174 198,-174 198,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-269.614C171,-257.24 171,-240.369 171,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-226.05 171,-216.05 167.5,-226.05 174.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"183.053\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-260.8C171,-249.16 171,-233.55 171,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-220.18 171,-210.18 167.5,-220.18 174.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"186.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node13\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,-0 126,-0 126,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,0 126,0 126,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-89.614C99,-77.2403 99,-60.3686 99,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.0504 99,-36.0504 95.5001,-46.0504 102.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"111.053\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-86.8C99,-75.16 99,-59.55 99,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"114.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">halb</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -2281,7 +2310,7 @@ "<Dot visualization: expr_as_graph [(\"halb\",{a,b|a:1..10 & b:1..10 & b*2=a})]>" ] }, - "execution_count": 89, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -2300,7 +2329,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2312,7 +2341,7 @@ "{(1↦\"nein\"),(2↦\"nein\"),(3↦\"ja\"),(4↦\"nein\"),(5↦\"nein\"),(6↦\"ja\"),(7↦\"nein\")}" ] }, - "execution_count": 90, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -2323,7 +2352,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -2332,100 +2361,116 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"494pt\" height=\"134pt\"\n", - " viewBox=\"0.00 0.00 494.00 134.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 130)\">\n", + "<svg width=\"499pt\" height=\"131pt\"\n", + " viewBox=\"0.00 0.00 499.00 131.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 127)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-130 491,-130 491,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 495,-127 495,4 -4,4\"/>\n", "<!-- 7 -->\n", - "<g id=\"node1\" class=\"node\"><title>7</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-126 0,-126 0,-90 54,-90 54,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>7</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", "</g>\n", "<!-- "nein" -->\n", - "<g id=\"node3\" class=\"node\"><title>"nein"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"198,-36 144,-36 144,-0 198,-0 198,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>"nein"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"201.5,-36 140.5,-36 140.5,0 201.5,0 201.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", "</g>\n", "<!-- 7->"nein" -->\n", - "<g id=\"edge2\" class=\"edge\"><title>7->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M40.5497,-89.8128C50.2969,-78.3881 64.3106,-63.7485 79.2384,-54 95.9456,-43.0894 116.554,-34.8399 134.006,-29.0985\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"135.369,-32.3392 143.863,-26.0068 133.274,-25.6601 135.369,-32.3392\"/>\n", - "<text text-anchor=\"middle\" x=\"97.8808\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>7->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M33.8,-86.94C38.95,-76.08 47.01,-62.5 58,-54 78.95,-37.81 107.46,-29.05 130.6,-24.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"131.28,-27.77 140.47,-22.51 130,-20.89 131.28,-27.77\"/>\n", + "<text text-anchor=\"middle\" x=\"82\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node4\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-126 360,-126 360,-90 414,-90 414,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"387\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-123 360,-123 360,-87 414,-87 414,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"387\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- "ja" -->\n", - "<g id=\"node6\" class=\"node\"><title>"ja"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-36 396,-36 396,-0 450,-0 450,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"423\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>"ja"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-36 396,-36 396,0 450,0 450,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"423\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", "</g>\n", "<!-- 6->"ja" -->\n", - "<g id=\"edge4\" class=\"edge\"><title>6->"ja"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M390.262,-89.8625C392.604,-79.2679 396.233,-65.5374 401.238,-54 402.548,-50.9806 404.09,-47.9162 405.738,-44.9205\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.788,-46.6402 410.876,-36.2531 402.766,-43.071 408.788,-46.6402\"/>\n", - "<text text-anchor=\"middle\" x=\"419.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>6->"ja"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M384.71,-86.66C384.11,-76.72 384.61,-64.22 389,-54 390.49,-50.53 392.5,-47.2 394.79,-44.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"397.58,-46.2 401.38,-36.31 392.24,-41.67 397.58,-46.2\"/>\n", + "<text text-anchor=\"middle\" x=\"413\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node7\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-126 72,-126 72,-90 126,-90 126,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 5->"nein" -->\n", - "<g id=\"edge6\" class=\"edge\"><title>5->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M107.669,-89.8968C113.568,-79.0619 121.966,-65.0589 131.238,-54 134.396,-50.2342 137.968,-46.5154 141.643,-42.9883\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"144.205,-45.3888 149.234,-36.0635 139.487,-40.2173 144.205,-45.3888\"/>\n", - "<text text-anchor=\"middle\" x=\"149.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>5->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.07,-86.93C106.17,-76.59 111.25,-63.6 119,-54 122.77,-49.34 127.32,-45.06 132.15,-41.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"134.42,-43.89 140.44,-35.17 130.3,-38.23 134.42,-43.89\"/>\n", + "<text text-anchor=\"middle\" x=\"143\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node9\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-126 144,-126 144,-90 198,-90 198,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-123 144,-123 144,-87 198,-87 198,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 4->"nein" -->\n", - "<g id=\"edge8\" class=\"edge\"><title>4->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-89.614C171,-77.2403 171,-60.3686 171,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.0504 171,-36.0504 167.5,-46.0504 174.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"188.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-86.8C171,-75.16 171,-59.55 171,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.18 171,-36.18 167.5,-46.18 174.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"195\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node11\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-126 432,-126 432,-90 486,-90 486,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"459\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-123 432,-123 432,-87 486,-87 486,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"459\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 3->"ja" -->\n", - "<g id=\"edge10\" class=\"edge\"><title>3->"ja"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M451.888,-89.614C446.726,-76.9977 439.652,-59.7052 433.796,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"437.001,-43.9807 429.975,-36.0504 430.522,-46.6311 437.001,-43.9807\"/>\n", - "<text text-anchor=\"middle\" x=\"462.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>3->"ja"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M451.71,-86.8C446.69,-74.93 439.91,-58.93 434.2,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"437.4,-44.02 430.27,-36.18 430.95,-46.75 437.4,-44.02\"/>\n", + "<text text-anchor=\"middle\" x=\"467\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node13\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-126 216,-126 216,-90 270,-90 270,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"243\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-123 216,-123 216,-87 270,-87 270,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 2->"nein" -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M234.021,-89.9427C227.94,-79.126 219.336,-65.1263 210,-54 206.875,-50.2759 203.355,-46.5815 199.742,-43.0667\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.001,-40.3881 192.289,-36.1522 197.24,-45.5196 202.001,-40.3881\"/>\n", - "<text text-anchor=\"middle\" x=\"241.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M238.11,-86.98C234.54,-76.67 228.94,-63.68 221,-54 217.51,-49.75 213.39,-45.79 209.02,-42.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.07,-39.33 201,-36.03 206.82,-44.89 211.07,-39.33\"/>\n", + "<text text-anchor=\"middle\" x=\"253\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node15\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-126 288,-126 288,-90 342,-90 342,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"315\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-123 288,-123 288,-87 342,-87 342,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"315\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 1->"nein" -->\n", - "<g id=\"edge14\" class=\"edge\"><title>1->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M301.53,-89.8056C291.835,-78.3777 277.887,-63.7372 263,-54 246.263,-43.0528 225.601,-34.8001 208.102,-29.0661\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"208.806,-25.6193 198.217,-25.9797 206.72,-32.3012 208.806,-25.6193\"/>\n", - "<text text-anchor=\"middle\" x=\"301.881\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>1->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M307.14,-86.97C301.32,-76.11 292.44,-62.54 281,-54 260.8,-38.93 233.91,-30.22 211.77,-25.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.47,-21.83 201.97,-23.24 211.05,-28.69 212.47,-21.83\"/>\n", + "<text text-anchor=\"middle\" x=\"318\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">teilbar</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -2434,7 +2479,7 @@ "<Dot visualization: expr_as_graph [(\"teilbar\",{x,y|x:1..7 & (x mod 3=0 => y=\"ja\") & (x mod 3>0 => y=\"nein\")})]>" ] }, - "execution_count": 91, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -2447,12 +2492,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Das Kartesische Produkt stellt die Relation dar die immer wahr ist (für die angegebenen Basismengen). Als Graph ist dies der [vollständige Graph](https://de.wikipedia.org/wiki/Vollständiger_Graph) über die Basismengen:" + "Das Kartesische Produkt stellt die Relation dar, die immer wahr ist (für die angegebenen Basismengen). Als Graph ist dies der [vollständige Graph](https://de.wikipedia.org/wiki/Vollständiger_Graph) über die Basismengen:" ] }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -2461,7 +2506,7 @@ "Preference changed: DOT_ENGINE = circo\n" ] }, - "execution_count": 92, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2472,7 +2517,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -2481,188 +2526,218 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"278pt\" height=\"235pt\"\n", - " viewBox=\"0.00 0.00 278.49 234.72\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 230.72)\">\n", + "<svg width=\"281pt\" height=\"235pt\"\n", + " viewBox=\"0.00 0.00 281.39 234.72\" 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 230.72)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-230.72 275.492,-230.72 275.492,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-230.72 277.39,-230.72 277.39,4 -4,4\"/>\n", "<!-- 5 -->\n", - "<g id=\"node1\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"166.103,-36 112.103,-36 112.103,-0 166.103,-0 166.103,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"139.103\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"166.1,-36 112.1,-36 112.1,0 166.1,0 166.1,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"139.1\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 5->5 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>5->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M166.343,-24.7434C176.127,-24.8884 184.103,-22.6406 184.103,-18 184.103,-15.1721 181.141,-13.2328 176.613,-12.182\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.617,-8.66827 166.343,-11.2566 175.989,-15.64 176.617,-8.66827\"/>\n", - "<text text-anchor=\"middle\" x=\"192.656\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>5->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M166.34,-24.74C176.13,-24.89 184.1,-22.64 184.1,-18 184.1,-15.17 181.14,-13.23 176.61,-12.18\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.62,-8.67 166.34,-11.26 175.99,-15.64 176.62,-8.67\"/>\n", + "<text text-anchor=\"middle\" x=\"194.1\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node4\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"235.386,-131.36 181.386,-131.36 181.386,-95.3602 235.386,-95.3602 235.386,-131.36\"/>\n", - "<text text-anchor=\"middle\" x=\"208.386\" y=\"-109.16\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"235.39,-131.36 181.39,-131.36 181.39,-95.36 235.39,-95.36 235.39,-131.36\"/>\n", + "<text text-anchor=\"middle\" x=\"208.39\" y=\"-109.66\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 5->4 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>5->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.096,-36.3277C154.534,-50.7471 168.707,-70.9379 181.466,-87.0605\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"178.949,-89.5137 187.971,-95.0686 184.383,-85.1 178.949,-89.5137\"/>\n", - "<text text-anchor=\"middle\" x=\"153.781\" y=\"-64.4941\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>5->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.1,-36.33C154.53,-50.75 168.71,-70.94 181.47,-87.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"178.95,-89.51 187.97,-95.07 184.38,-85.1 178.95,-89.51\"/>\n", + "<text text-anchor=\"middle\" x=\"153.78\" y=\"-65.49\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node6\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-190.296 1.42109e-14,-190.296 1.42109e-14,-154.296 54,-154.296 54,-190.296\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-168.096\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-190.3 0,-190.3 0,-154.3 54,-154.3 54,-190.3\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-168.6\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 5->3 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>5->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M119.853,-36.2994C97.0935,-63.3769 60.1624,-114.076 40.3139,-145.379\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"37.2413,-143.694 34.9654,-154.041 43.1974,-147.371 37.2413,-143.694\"/>\n", - "<text text-anchor=\"middle\" x=\"90.0836\" y=\"-93.6394\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>5->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M119.85,-36.3C97.09,-63.38 60.16,-114.08 40.31,-145.38\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"37.24,-143.69 34.97,-154.04 43.2,-147.37 37.24,-143.69\"/>\n", + "<text text-anchor=\"middle\" x=\"70.08\" y=\"-94.64\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node8\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"166.103,-226.72 112.103,-226.72 112.103,-190.72 166.103,-190.72 166.103,-226.72\"/>\n", - "<text text-anchor=\"middle\" x=\"139.103\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"166.1,-226.72 112.1,-226.72 112.1,-190.72 166.1,-190.72 166.1,-226.72\"/>\n", + "<text text-anchor=\"middle\" x=\"139.1\" y=\"-205.02\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M134.924,-36.2871C131.782,-69.6799 131.519,-140.734 134.137,-180.418\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"130.655,-180.794 134.929,-190.489 137.634,-180.245 130.655,-180.794\"/>\n", - "<text text-anchor=\"middle\" x=\"143.53\" y=\"-104.152\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M134.92,-36.29C131.78,-69.68 131.52,-140.73 134.14,-180.42\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"130.66,-180.79 134.93,-190.49 137.63,-180.24 130.66,-180.79\"/>\n", + "<text text-anchor=\"middle\" x=\"124.53\" y=\"-112.15\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node10\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-72.4243 0,-72.4243 0,-36.4243 54,-36.4243 54,-72.4243\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-50.2243\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-72.42 0,-72.42 0,-36.42 54,-36.42 54,-72.42\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-50.72\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 5->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>5->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M111.885,-20.7864C97.3378,-24.4353 79.2398,-30.0755 63.492,-35.7894\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.1734,-32.5458 54.0433,-39.3394 64.6354,-39.0986 62.1734,-32.5458\"/>\n", - "<text text-anchor=\"middle\" x=\"90.6883\" y=\"-35.0879\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>5->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M111.88,-20.79C97.34,-24.44 79.24,-30.08 63.49,-35.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.17,-32.55 54.04,-39.34 64.64,-39.1 62.17,-32.55\"/>\n", + "<text text-anchor=\"middle\" x=\"77.69\" y=\"-32.09\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4->5 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>4->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M201.392,-95.0325C192.954,-80.6131 178.781,-60.4223 166.023,-44.2997\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"168.539,-41.8465 159.517,-36.2915 163.106,-46.2601 168.539,-41.8465\"/>\n", - "<text text-anchor=\"middle\" x=\"193.707\" y=\"-58.4661\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>4->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M201.39,-95.03C192.95,-80.61 178.78,-60.42 166.02,-44.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"168.54,-41.85 159.52,-36.29 163.11,-46.26 168.54,-41.85\"/>\n", + "<text text-anchor=\"middle\" x=\"173.71\" y=\"-73.47\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4->4 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>4->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M235.627,-120.104C245.41,-120.249 253.386,-118.001 253.386,-113.36 253.386,-110.532 250.424,-108.593 245.896,-107.542\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"245.9,-104.028 235.627,-106.617 245.272,-111 245.9,-104.028\"/>\n", - "<text text-anchor=\"middle\" x=\"261.939\" y=\"-109.16\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>4->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M235.63,-120.1C245.41,-120.25 253.39,-118 253.39,-113.36 253.39,-110.53 250.42,-108.59 245.9,-107.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"245.9,-104.03 235.63,-106.62 245.27,-111 245.9,-104.03\"/>\n", + "<text text-anchor=\"middle\" x=\"263.39\" y=\"-109.66\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4->3 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.277,-117.045C149.974,-124.882 98.3616,-141.388 63.5383,-154.508\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.2655,-151.247 54.1924,-158.108 64.7821,-157.779 62.2655,-151.247\"/>\n", - "<text text-anchor=\"middle\" x=\"125.407\" y=\"-142.576\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.28,-117.04C149.97,-124.88 98.36,-141.39 63.54,-154.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.27,-151.25 54.19,-158.11 64.78,-157.78 62.27,-151.25\"/>\n", + "<text text-anchor=\"middle\" x=\"132.41\" y=\"-139.58\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M188.004,-131.613C176.098,-145.843 161.586,-165.733 151.375,-181.778\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"148.144,-180.352 145.911,-190.709 154.115,-184.005 148.144,-180.352\"/>\n", - "<text text-anchor=\"middle\" x=\"179.689\" y=\"-159.495\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M188,-131.61C176.1,-145.84 161.59,-165.73 151.37,-181.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"148.14,-180.35 145.91,-190.71 154.12,-184.01 148.14,-180.35\"/>\n", + "<text text-anchor=\"middle\" x=\"159.69\" y=\"-160.5\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.217,-99.1819C150.038,-86.8661 98.7636,-70.0711 63.9685,-60.6802\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.741,-57.2646 54.1813,-58.1271 62.974,-64.038 64.741,-57.2646\"/>\n", - "<text text-anchor=\"middle\" x=\"119.593\" y=\"-86.731\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.22,-99.18C150.04,-86.87 98.76,-70.07 63.97,-60.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.74,-57.26 54.18,-58.13 62.97,-64.04 64.74,-57.26\"/>\n", + "<text text-anchor=\"middle\" x=\"112.59\" y=\"-68.73\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3->5 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>3->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.2492,-153.997C69.0091,-126.919 105.94,-76.22 125.789,-44.9165\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.861,-46.6023 131.137,-36.2547 122.905,-42.9245 128.861,-46.6023\"/>\n", - "<text text-anchor=\"middle\" x=\"76.019\" y=\"-88.2566\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>3->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.25,-154C69.01,-126.92 105.94,-76.22 125.79,-44.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.86,-46.6 131.14,-36.25 122.91,-42.92 128.86,-46.6\"/>\n", + "<text text-anchor=\"middle\" x=\"96.02\" y=\"-103.26\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3->4 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>3->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1093,-168.611C85.4121,-160.774 137.024,-144.268 171.848,-131.149\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"173.12,-134.409 181.193,-127.548 170.604,-127.877 173.12,-134.409\"/>\n", - "<text text-anchor=\"middle\" x=\"115.978\" y=\"-156.68\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>3->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.11,-168.61C85.41,-160.77 137.02,-144.27 171.85,-131.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"173.12,-134.41 181.19,-127.55 170.6,-127.88 173.12,-134.41\"/>\n", + "<text text-anchor=\"middle\" x=\"102.98\" y=\"-153.68\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-179.039C64.0239,-179.184 72,-176.937 72,-172.296 72,-169.468 69.0382,-167.529 64.5105,-166.478\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5146,-162.964 54.2408,-165.553 63.8863,-169.936 64.5146,-162.964\"/>\n", - "<text text-anchor=\"middle\" x=\"80.5533\" y=\"-168.096\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.24,-179.04C64.02,-179.18 72,-176.94 72,-172.3 72,-169.47 69.04,-167.53 64.51,-166.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.51,-162.96 54.24,-165.55 63.89,-169.94 64.51,-162.96\"/>\n", + "<text text-anchor=\"middle\" x=\"82\" y=\"-168.6\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3->2 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>3->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0187,-187.371C68.4305,-192.993 86.3706,-198.935 102.061,-203.321\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"101.424,-206.773 111.988,-205.96 103.222,-200.008 101.424,-206.773\"/>\n", - "<text text-anchor=\"middle\" x=\"81.0399\" y=\"-180.146\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.02,-187.37C68.43,-192.99 86.37,-198.94 102.06,-203.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"101.42,-206.77 111.99,-205.96 103.22,-200.01 101.42,-206.77\"/>\n", + "<text text-anchor=\"middle\" x=\"68.04\" y=\"-199.15\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.036,-154.137C33.9936,-135.157 34.2743,-105.11 32.8782,-82.9567\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"36.3515,-82.4842 32.0581,-72.7983 29.3742,-83.0475 36.3515,-82.4842\"/>\n", - "<text text-anchor=\"middle\" x=\"23.4571\" y=\"-114.347\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.04,-154.14C33.99,-135.16 34.27,-105.11 32.88,-82.96\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"36.35,-82.48 32.06,-72.8 29.37,-83.05 36.35,-82.48\"/>\n", + "<text text-anchor=\"middle\" x=\"22.46\" y=\"-122.35\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2->5 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>2->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M143.281,-190.433C146.423,-157.04 146.686,-85.9864 144.069,-46.3026\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"147.55,-45.9263 143.276,-36.2317 140.572,-46.4755 147.55,-45.9263\"/>\n", - "<text text-anchor=\"middle\" x=\"134.675\" y=\"-114.168\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>2->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M143.28,-190.43C146.42,-157.04 146.69,-85.99 144.07,-46.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"147.55,-45.93 143.28,-36.23 140.57,-46.48 147.55,-45.93\"/>\n", + "<text text-anchor=\"middle\" x=\"153.68\" y=\"-122.17\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M159.485,-190.468C171.39,-176.238 185.902,-156.348 196.114,-140.302\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.344,-141.728 201.577,-131.371 193.373,-138.075 199.344,-141.728\"/>\n", - "<text text-anchor=\"middle\" x=\"167.799\" y=\"-154.185\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M159.48,-190.47C171.39,-176.24 185.9,-156.35 196.11,-140.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.34,-141.73 201.58,-131.37 193.37,-138.08 199.34,-141.73\"/>\n", + "<text text-anchor=\"middle\" x=\"187.8\" y=\"-169.19\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M112.084,-193.645C97.6721,-188.023 79.732,-182.081 64.0415,-177.695\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.6786,-174.243 54.1151,-175.057 62.8804,-181.008 64.6786,-174.243\"/>\n", - "<text text-anchor=\"middle\" x=\"85.0627\" y=\"-192.47\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M112.08,-193.65C97.67,-188.02 79.73,-182.08 64.04,-177.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.68,-174.24 54.12,-175.06 62.88,-181.01 64.68,-174.24\"/>\n", + "<text text-anchor=\"middle\" x=\"98.06\" y=\"-189.47\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M166.343,-215.464C176.127,-215.609 184.103,-213.361 184.103,-208.72 184.103,-205.892 181.141,-203.953 176.613,-202.902\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.617,-199.389 166.343,-201.977 175.989,-206.36 176.617,-199.389\"/>\n", - "<text text-anchor=\"middle\" x=\"192.656\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M166.34,-215.46C176.13,-215.61 184.1,-213.36 184.1,-208.72 184.1,-205.89 181.14,-203.95 176.61,-202.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.62,-199.39 166.34,-201.98 175.99,-206.36 176.62,-199.39\"/>\n", + "<text text-anchor=\"middle\" x=\"194.1\" y=\"-205.02\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M131.196,-190.563C114.906,-163.286 77.9893,-111.82 52.6823,-80.5357\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"55.2582,-78.1579 46.199,-72.664 49.8549,-82.6081 55.2582,-78.1579\"/>\n", - "<text text-anchor=\"middle\" x=\"101.939\" y=\"-124.35\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M131.2,-190.56C114.91,-163.29 77.99,-111.82 52.68,-80.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"55.26,-78.16 46.2,-72.66 49.85,-82.61 55.26,-78.16\"/>\n", + "<text text-anchor=\"middle\" x=\"81.94\" y=\"-139.35\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1->5 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>1->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.218,-51.638C68.7648,-47.989 86.8628,-42.3489 102.611,-36.635\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"103.929,-39.8785 112.059,-33.0849 101.467,-33.3257 103.929,-39.8785\"/>\n", - "<text text-anchor=\"middle\" x=\"81.4143\" y=\"-50.9365\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>1->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.22,-51.64C68.76,-47.99 86.86,-42.35 102.61,-36.63\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"103.93,-39.88 112.06,-33.08 101.47,-33.33 103.93,-39.88\"/>\n", + "<text text-anchor=\"middle\" x=\"68.41\" y=\"-47.94\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1686,-68.6026C85.3483,-80.9184 136.622,-97.7135 171.417,-107.104\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"170.645,-110.52 181.205,-109.657 172.412,-103.747 170.645,-110.52\"/>\n", - "<text text-anchor=\"middle\" x=\"109.793\" y=\"-94.6535\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.17,-68.6C85.35,-80.92 136.62,-97.71 171.42,-107.1\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"170.64,-110.52 181.2,-109.66 172.41,-103.75 170.64,-110.52\"/>\n", + "<text text-anchor=\"middle\" x=\"122.79\" y=\"-91.65\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M21.964,-72.5835C20.0064,-91.5634 19.7257,-121.61 21.1218,-143.764\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"17.6485,-144.236 21.9419,-153.922 24.6258,-143.673 17.6485,-144.236\"/>\n", - "<text text-anchor=\"middle\" x=\"30.5429\" y=\"-103.974\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M21.96,-72.58C20.01,-91.56 19.73,-121.61 21.12,-143.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"17.65,-144.24 21.94,-153.92 24.63,-143.67 17.65,-144.24\"/>\n", + "<text text-anchor=\"middle\" x=\"11.54\" y=\"-96.97\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge48\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M34.907,-72.5813C51.1969,-99.8592 88.1133,-151.325 113.42,-182.609\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.844,-184.987 119.904,-190.481 116.248,-180.537 110.844,-184.987\"/>\n", - "<text text-anchor=\"middle\" x=\"84.1636\" y=\"-116.395\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M34.91,-72.58C51.2,-99.86 88.11,-151.32 113.42,-182.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.84,-184.99 119.9,-190.48 116.25,-180.54 110.84,-184.99\"/>\n", + "<text text-anchor=\"middle\" x=\"64.16\" y=\"-116.4\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge50\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-61.1678C64.0239,-61.3128 72,-59.065 72,-54.4243 72,-51.5965 69.0382,-49.6571 64.5105,-48.6063\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5146,-45.0926 54.2408,-47.6809 63.8863,-52.0644 64.5146,-45.0926\"/>\n", - "<text text-anchor=\"middle\" x=\"80.5533\" y=\"-50.2243\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.24,-61.17C64.02,-61.31 72,-59.06 72,-54.42 72,-51.6 69.04,-49.66 64.51,-48.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.51,-45.09 54.24,-47.68 63.89,-52.06 64.51,-45.09\"/>\n", + "<text text-anchor=\"middle\" x=\"82\" y=\"-50.72\" font-family=\"Times,serif\" font-size=\"14.00\">K5</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -2671,7 +2746,7 @@ "<Dot visualization: expr_as_graph [(\"K5\",(1..5)*(1..5))]>" ] }, - "execution_count": 93, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2682,7 +2757,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -2691,7 +2766,7 @@ "Preference changed: DOT_ENGINE = circo\n" ] }, - "execution_count": 94, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2702,7 +2777,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -2711,663 +2786,773 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"505pt\" height=\"425pt\"\n", - " viewBox=\"0.00 0.00 505.18 425.44\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 421.441)\">\n", + "<svg width=\"510pt\" height=\"431pt\"\n", + " viewBox=\"0.00 0.00 510.07 431.39\" 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 427.39)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-421.441 502.177,-421.441 502.177,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-427.39 506.07,-427.39 506.07,4 -4,4\"/>\n", "<!-- 10 -->\n", - "<g id=\"node1\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"416.772,-108.849 362.772,-108.849 362.772,-72.8487 416.772,-72.8487 416.772,-108.849\"/>\n", - "<text text-anchor=\"middle\" x=\"389.772\" y=\"-86.6487\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"416.77,-111.82 362.77,-111.82 362.77,-75.82 416.77,-75.82 416.77,-111.82\"/>\n", + "<text text-anchor=\"middle\" x=\"389.77\" y=\"-90.12\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 10->10 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>10->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M417.012,-97.5921C426.796,-97.7371 434.772,-95.4893 434.772,-90.8487 434.772,-88.0208 431.81,-86.0815 427.282,-85.0307\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"427.286,-81.517 417.012,-84.1053 426.658,-88.4887 427.286,-81.517\"/>\n", - "<text text-anchor=\"middle\" x=\"446.825\" y=\"-86.6487\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>10->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M417.01,-100.57C426.8,-100.71 434.77,-98.46 434.77,-93.82 434.77,-91 431.81,-89.06 427.28,-88.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"427.29,-84.49 417.01,-87.08 426.66,-91.46 427.29,-84.49\"/>\n", + "<text text-anchor=\"middle\" x=\"449.27\" y=\"-90.12\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9 -->\n", - "<g id=\"node4\" class=\"node\"><title>9</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-226.72 401.07,-226.72 401.07,-190.72 455.07,-190.72 455.07,-226.72\"/>\n", - "<text text-anchor=\"middle\" x=\"428.07\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">9</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>9</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-229.7 401.07,-229.7 401.07,-193.7 455.07,-193.7 455.07,-229.7\"/>\n", + "<text text-anchor=\"middle\" x=\"428.07\" y=\"-208\" font-family=\"Times,serif\" font-size=\"14.00\">9</text>\n", "</g>\n", "<!-- 10->9 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>10->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M390.543,-108.993C394.632,-128.321 404.267,-159.101 412.959,-181.366\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"409.719,-182.689 416.736,-190.627 416.201,-180.046 409.719,-182.689\"/>\n", - "<text text-anchor=\"middle\" x=\"415.751\" y=\"-136.979\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>10->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M390.54,-111.97C394.63,-131.3 404.27,-162.08 412.96,-184.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"409.72,-185.66 416.74,-193.6 416.2,-183.02 409.72,-185.66\"/>\n", + "<text text-anchor=\"middle\" x=\"387.25\" y=\"-151.95\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8 -->\n", - "<g id=\"node6\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"192.566,-36 138.566,-36 138.566,-3.19744e-14 192.566,-3.19744e-14 192.566,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"165.566\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"192.57,-38.98 138.57,-38.98 138.57,-2.98 192.57,-2.98 192.57,-38.98\"/>\n", + "<text text-anchor=\"middle\" x=\"165.57\" y=\"-17.28\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 10->8 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>10->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.373,-77.002C322.249,-61.2334 247.446,-36.796 202.504,-24.6599\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.136,-21.2075 192.576,-22.0577 201.362,-27.9788 203.136,-21.2075\"/>\n", - "<text text-anchor=\"middle\" x=\"278.438\" y=\"-58.6309\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>10->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.37,-79.98C322.25,-64.21 247.45,-39.77 202.5,-27.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.14,-24.18 192.58,-25.03 201.36,-30.95 203.14,-24.18\"/>\n", + "<text text-anchor=\"middle\" x=\"267.94\" y=\"-42.61\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7 -->\n", - "<g id=\"node8\" class=\"node\"><title>7</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"92.2988,-108.849 38.2988,-108.849 38.2988,-72.8487 92.2988,-72.8487 92.2988,-108.849\"/>\n", - "<text text-anchor=\"middle\" x=\"65.2988\" y=\"-86.6487\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>7</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"92.3,-111.82 38.3,-111.82 38.3,-75.82 92.3,-75.82 92.3,-111.82\"/>\n", + "<text text-anchor=\"middle\" x=\"65.3\" y=\"-90.12\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", "</g>\n", "<!-- 10->7 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>10->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.665,-86.9028C304.809,-83.3641 169.124,-83.1747 102.938,-86.3347\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.354,-82.861 92.5561,-86.8936 102.73,-89.8509 102.354,-82.861\"/>\n", - "<text text-anchor=\"middle\" x=\"232.802\" y=\"-73.4187\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>10->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.67,-89.88C304.81,-86.34 169.12,-86.15 102.94,-89.31\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.35,-85.84 92.56,-89.87 102.73,-92.83 102.35,-85.84\"/>\n", + "<text text-anchor=\"middle\" x=\"218.3\" y=\"-78.39\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node10\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-226.72 0,-226.72 0,-190.72 54,-190.72 54,-226.72\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-229.7 0,-229.7 0,-193.7 54,-193.7 54,-229.7\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-208\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 10->6 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>10->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.538,-95.804C298.2,-112.673 136.809,-164.889 63.8349,-192.188\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.2499,-189.046 54.144,-195.868 64.7352,-195.59 62.2499,-189.046\"/>\n", - "<text text-anchor=\"middle\" x=\"216.186\" y=\"-151.796\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>10->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.54,-98.78C298.2,-115.65 136.81,-167.86 63.83,-195.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.25,-192.02 54.14,-198.84 64.74,-198.56 62.25,-192.02\"/>\n", + "<text text-anchor=\"middle\" x=\"198.69\" y=\"-135.77\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node12\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"92.2988,-344.592 38.2988,-344.592 38.2988,-308.592 92.2988,-308.592 92.2988,-344.592\"/>\n", - "<text text-anchor=\"middle\" x=\"65.2988\" y=\"-322.392\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"92.3,-347.57 38.3,-347.57 38.3,-311.57 92.3,-311.57 92.3,-347.57\"/>\n", + "<text text-anchor=\"middle\" x=\"65.3\" y=\"-325.87\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.611,-105.875C301.402,-145.615 153.51,-252.95 92.3785,-301.866\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.9172,-299.355 84.3464,-308.367 94.3213,-304.796 89.9172,-299.355\"/>\n", - "<text text-anchor=\"middle\" x=\"235.495\" y=\"-211.67\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.61,-108.85C301.4,-148.59 153.51,-255.93 92.38,-304.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.92,-302.33 84.35,-311.34 94.32,-307.77 89.92,-302.33\"/>\n", + "<text text-anchor=\"middle\" x=\"241.99\" y=\"-195.65\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node14\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"192.566,-417.441 138.566,-417.441 138.566,-381.441 192.566,-381.441 192.566,-417.441\"/>\n", - "<text text-anchor=\"middle\" x=\"165.566\" y=\"-395.241\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"192.57,-420.42 138.57,-420.42 138.57,-384.42 192.57,-384.42 192.57,-420.42\"/>\n", + "<text text-anchor=\"middle\" x=\"165.57\" y=\"-398.72\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 10->4 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>10->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M372.181,-109.004C329.263,-161.03 220.554,-310.468 180.507,-372.262\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.323,-370.746 174.9,-381.061 183.226,-374.508 177.323,-370.746\"/>\n", - "<text text-anchor=\"middle\" x=\"289.344\" y=\"-245.433\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>10->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M372.18,-111.98C329.26,-164.01 220.55,-313.44 180.51,-375.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.32,-373.72 174.9,-384.04 183.23,-377.48 177.32,-373.72\"/>\n", + "<text text-anchor=\"middle\" x=\"261.84\" y=\"-247.41\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node16\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"316.504,-417.441 262.504,-417.441 262.504,-381.441 316.504,-381.441 316.504,-417.441\"/>\n", - "<text text-anchor=\"middle\" x=\"289.504\" y=\"-395.241\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"316.5,-420.42 262.5,-420.42 262.5,-384.42 316.5,-384.42 316.5,-420.42\"/>\n", + "<text text-anchor=\"middle\" x=\"289.5\" y=\"-398.72\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 10->3 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>10->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M380.183,-109.075C358.95,-160.922 310.533,-309.381 294.359,-371.548\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"290.917,-370.886 291.888,-381.436 297.708,-372.583 290.917,-370.886\"/>\n", - "<text text-anchor=\"middle\" x=\"351.271\" y=\"-240.112\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>10->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M380.18,-112.05C358.95,-163.9 310.53,-312.36 294.36,-374.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"290.92,-373.86 291.89,-384.41 297.71,-375.56 290.92,-373.86\"/>\n", + "<text text-anchor=\"middle\" x=\"322.77\" y=\"-247.09\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node18\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"416.772,-344.592 362.772,-344.592 362.772,-308.592 416.772,-308.592 416.772,-344.592\"/>\n", - "<text text-anchor=\"middle\" x=\"389.772\" y=\"-322.392\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"416.77,-347.57 362.77,-347.57 362.77,-311.57 416.77,-311.57 416.77,-347.57\"/>\n", + "<text text-anchor=\"middle\" x=\"389.77\" y=\"-325.87\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 10->2 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>10->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M385.963,-108.956C382.319,-149.752 382.061,-249.114 385.19,-298.197\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"381.719,-298.714 385.958,-308.423 388.699,-298.189 381.719,-298.714\"/>\n", - "<text text-anchor=\"middle\" x=\"398.577\" y=\"-199.376\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>10->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M385.96,-111.93C382.32,-152.73 382.06,-252.09 385.19,-301.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"381.72,-301.69 385.96,-311.4 388.7,-301.16 381.72,-301.69\"/>\n", + "<text text-anchor=\"middle\" x=\"371.08\" y=\"-210.35\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node20\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"316.504,-36 262.504,-36 262.504,-0 316.504,-0 316.504,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"289.504\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"316.5,-38.98 262.5,-38.98 262.5,-2.98 316.5,-2.98 316.5,-38.98\"/>\n", + "<text text-anchor=\"middle\" x=\"289.5\" y=\"-17.28\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 10->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>10->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M374.093,-72.7684C360.996,-61.5379 341.914,-47.2927 325.167,-36.076\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"326.951,-33.0608 316.665,-30.5184 323.12,-38.9199 326.951,-33.0608\"/>\n", - "<text text-anchor=\"middle\" x=\"340.63\" y=\"-62.2222\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>10->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M374.09,-75.74C361,-64.51 341.91,-50.27 325.17,-39.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"326.95,-36.04 316.67,-33.49 323.12,-41.89 326.95,-36.04\"/>\n", + "<text text-anchor=\"middle\" x=\"335.13\" y=\"-46.2\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->10 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>9->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M427.299,-190.576C423.21,-171.248 413.576,-140.468 404.883,-118.203\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.123,-116.88 401.106,-108.942 401.641,-119.524 408.123,-116.88\"/>\n", - "<text text-anchor=\"middle\" x=\"430.091\" y=\"-146.19\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>9->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M427.3,-193.55C423.21,-174.22 413.58,-143.44 404.88,-121.18\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.12,-119.86 401.11,-111.92 401.64,-122.5 408.12,-119.86\"/>\n", + "<text text-anchor=\"middle\" x=\"430.59\" y=\"-161.16\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->9 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>9->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.311,-215.464C465.094,-215.609 473.07,-213.361 473.07,-208.72 473.07,-205.892 470.109,-203.953 465.581,-202.902\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.585,-199.389 455.311,-201.977 464.957,-206.36 465.585,-199.389\"/>\n", - "<text text-anchor=\"middle\" x=\"485.124\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>9->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.31,-218.44C465.09,-218.58 473.07,-216.34 473.07,-211.7 473.07,-208.87 470.11,-206.93 465.58,-205.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.59,-202.36 455.31,-204.95 464.96,-209.34 465.59,-202.36\"/>\n", + "<text text-anchor=\"middle\" x=\"487.57\" y=\"-208\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->8 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>9->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M409.731,-190.646C366.519,-154.823 258.006,-75.6478 201.286,-38.1935\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.933,-35.0886 192.645,-32.5536 199.106,-40.9504 202.933,-35.0886\"/>\n", - "<text text-anchor=\"middle\" x=\"296.509\" y=\"-122.22\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>9->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M409.73,-193.62C366.52,-157.8 258.01,-78.62 201.29,-41.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.93,-38.06 192.65,-35.53 199.11,-43.93 202.93,-38.06\"/>\n", + "<text text-anchor=\"middle\" x=\"291.01\" y=\"-121.19\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->7 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>9->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.792,-195.816C336.385,-170.946 174.891,-118.345 101.998,-98.3473\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.885,-94.9617 92.3196,-95.7482 101.07,-101.722 102.885,-94.9617\"/>\n", - "<text text-anchor=\"middle\" x=\"255.395\" y=\"-130.882\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>9->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.79,-198.79C336.38,-173.92 174.89,-121.32 102,-101.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.89,-97.94 92.32,-98.72 101.07,-104.7 102.89,-97.94\"/>\n", + "<text text-anchor=\"middle\" x=\"236.89\" y=\"-138.86\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->6 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>9->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.819,-205.107C330.71,-201.1 144.018,-200.932 64.1209,-204.602\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.833,-201.112 54.0253,-205.12 64.1914,-208.103 63.833,-201.112\"/>\n", - "<text text-anchor=\"middle\" x=\"232.47\" y=\"-191.654\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>9->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.82,-208.08C330.71,-204.08 144.02,-203.91 64.12,-207.58\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.83,-204.09 54.03,-208.09 64.19,-211.08 63.83,-204.09\"/>\n", + "<text text-anchor=\"middle\" x=\"217.97\" y=\"-211.63\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->5 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>9->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.837,-213.676C336.499,-230.545 175.108,-282.761 102.134,-310.059\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"100.549,-306.917 92.4428,-313.74 103.034,-313.461 100.549,-306.917\"/>\n", - "<text text-anchor=\"middle\" x=\"254.485\" y=\"-269.668\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>9->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.84,-216.65C336.5,-233.52 175.11,-285.74 102.13,-313.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"100.55,-309.89 92.44,-316.71 103.03,-316.44 100.55,-309.89\"/>\n", + "<text text-anchor=\"middle\" x=\"265.99\" y=\"-268.64\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->4 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>9->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.938,-223.309C350.229,-255.975 241.906,-334.564 191.85,-374.882\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"189.587,-372.211 184.052,-381.245 194.013,-377.634 189.587,-372.211\"/>\n", - "<text text-anchor=\"middle\" x=\"304.394\" y=\"-306.895\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>9->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.94,-226.28C350.23,-258.95 241.91,-337.54 191.85,-377.86\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"189.59,-375.19 184.05,-384.22 194.01,-380.61 189.59,-375.19\"/>\n", + "<text text-anchor=\"middle\" x=\"281.89\" y=\"-305.87\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->3 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>9->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M409.417,-226.907C381.115,-260.694 328.448,-333.028 303.299,-372.498\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"300.121,-370.98 297.808,-381.32 306.064,-374.679 300.121,-370.98\"/>\n", - "<text text-anchor=\"middle\" x=\"368.358\" y=\"-304.502\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>9->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M409.42,-229.88C381.11,-263.67 328.45,-336 303.3,-375.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"300.12,-373.96 297.81,-384.29 306.06,-377.65 300.12,-373.96\"/>\n", + "<text text-anchor=\"middle\" x=\"341.86\" y=\"-306.48\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->2 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>9->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M416.722,-226.845C408.539,-245.954 398.499,-276.271 392.878,-298.48\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"389.44,-297.81 390.565,-308.345 396.255,-299.408 389.44,-297.81\"/>\n", - "<text text-anchor=\"middle\" x=\"390.8\" y=\"-254.463\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>9->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M416.72,-229.82C408.54,-248.93 398.5,-279.25 392.88,-301.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"389.44,-300.79 390.57,-311.32 396.26,-302.38 389.44,-300.79\"/>\n", + "<text text-anchor=\"middle\" x=\"390.3\" y=\"-269.44\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 9->1 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>9->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M419.687,-190.468C399.07,-156.41 346.435,-83.3573 314.672,-44.1088\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"317.285,-41.7749 308.23,-36.2729 311.877,-46.2203 317.285,-41.7749\"/>\n", - "<text text-anchor=\"middle\" x=\"354.18\" y=\"-122.089\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>9->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M419.69,-193.44C399.07,-159.39 346.44,-86.33 314.67,-47.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"317.28,-44.75 308.23,-39.25 311.88,-49.2 317.28,-44.75\"/>\n", + "<text text-anchor=\"middle\" x=\"352.68\" y=\"-124.06\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->10 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>8->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.965,-31.8467C233.089,-47.6153 307.892,-72.0527 352.834,-84.1888\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.202,-87.6412 362.762,-86.791 353.976,-80.8699 352.202,-87.6412\"/>\n", - "<text text-anchor=\"middle\" x=\"276.9\" y=\"-41.8177\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>8->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.97,-34.82C233.09,-50.59 307.89,-75.03 352.83,-87.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.2,-90.62 362.76,-89.77 353.98,-83.84 352.2,-90.62\"/>\n", + "<text text-anchor=\"middle\" x=\"258.4\" y=\"-64.79\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->9 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>8->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.906,-36.0746C227.118,-71.8972 335.631,-151.073 392.351,-188.527\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.704,-191.632 400.991,-194.167 394.531,-185.77 390.704,-191.632\"/>\n", - "<text text-anchor=\"middle\" x=\"297.128\" y=\"-96.1007\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>8->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.91,-39.05C227.12,-74.87 335.63,-154.05 392.35,-191.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.7,-194.61 400.99,-197.14 394.53,-188.74 390.7,-194.61\"/>\n", + "<text text-anchor=\"middle\" x=\"273.63\" y=\"-104.08\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->8 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>8->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.807,-24.7434C202.59,-24.8884 210.566,-22.6406 210.566,-18 210.566,-15.1721 207.605,-13.2328 203.077,-12.182\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.081,-8.66827 192.807,-11.2566 202.453,-15.64 203.081,-8.66827\"/>\n", - "<text text-anchor=\"middle\" x=\"222.62\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>8->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.81,-27.72C202.59,-27.86 210.57,-25.62 210.57,-20.98 210.57,-18.15 207.6,-16.21 203.08,-15.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.08,-11.64 192.81,-14.23 202.45,-18.62 203.08,-11.64\"/>\n", + "<text text-anchor=\"middle\" x=\"225.07\" y=\"-17.28\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->7 -->\n", - "<g id=\"edge48\" class=\"edge\"><title>8->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M138.372,-30.5395C122.852,-40.4161 103.635,-54.2839 88.7754,-66.2909\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"86.4757,-63.6511 81.0192,-72.7328 90.9482,-69.036 86.4757,-63.6511\"/>\n", - "<text text-anchor=\"middle\" x=\"105.574\" y=\"-32.2152\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>8->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M138.37,-33.51C122.85,-43.39 103.64,-57.26 88.78,-69.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"86.48,-66.63 81.02,-75.71 90.95,-72.01 86.48,-66.63\"/>\n", + "<text text-anchor=\"middle\" x=\"99.07\" y=\"-55.19\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->6 -->\n", - "<g id=\"edge50\" class=\"edge\"><title>8->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.913,-36.1863C118.611,-69.974 65.9439,-142.308 40.7952,-181.777\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"37.617,-180.26 35.3041,-190.599 43.5598,-183.959 37.617,-180.26\"/>\n", - "<text text-anchor=\"middle\" x=\"105.854\" y=\"-113.782\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>8->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.91,-39.16C118.61,-72.95 65.94,-145.28 40.8,-184.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"37.62,-183.24 35.3,-193.57 43.56,-186.93 37.62,-183.24\"/>\n", + "<text text-anchor=\"middle\" x=\"79.35\" y=\"-115.76\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->5 -->\n", - "<g id=\"edge52\" class=\"edge\"><title>8->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M155.978,-36.2264C134.745,-88.0737 86.3276,-236.532 70.1541,-298.7\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"66.7121,-298.037 67.6823,-308.587 73.5031,-299.735 66.7121,-298.037\"/>\n", - "<text text-anchor=\"middle\" x=\"127.066\" y=\"-167.263\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge26\" class=\"edge\">\n", + "<title>8->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M155.98,-39.2C134.75,-91.05 86.33,-239.51 70.15,-301.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"66.71,-301.01 67.68,-311.56 73.5,-302.71 66.71,-301.01\"/>\n", + "<text text-anchor=\"middle\" x=\"98.57\" y=\"-174.24\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge54\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M162.476,-36.1411C157.828,-97.3851 157.608,-296.808 161.815,-371.158\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.326,-371.437 162.468,-381.189 165.311,-370.982 158.326,-371.437\"/>\n", - "<text text-anchor=\"middle\" x=\"149.145\" y=\"-199.449\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge27\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M162.48,-39.12C157.83,-100.36 157.61,-299.78 161.81,-374.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.33,-374.41 162.47,-384.16 165.31,-373.96 158.33,-374.41\"/>\n", + "<text text-anchor=\"middle\" x=\"147.65\" y=\"-210.42\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->3 -->\n", - "<g id=\"edge56\" class=\"edge\"><title>8->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M168.268,-36.0616C183.225,-97.3274 247.958,-297.401 276.437,-371.512\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"273.291,-373.078 280.205,-381.106 279.807,-370.519 273.291,-373.078\"/>\n", - "<text text-anchor=\"middle\" x=\"236.352\" y=\"-195.587\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge28\" class=\"edge\">\n", + "<title>8->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M168.27,-39.04C183.23,-100.3 247.96,-300.38 276.44,-374.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"273.29,-376.05 280.21,-384.08 279.81,-373.49 273.29,-376.05\"/>\n", + "<text text-anchor=\"middle\" x=\"207.85\" y=\"-195.56\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->2 -->\n", - "<g id=\"edge58\" class=\"edge\"><title>8->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M174.696,-36.0523C207.21,-88.2535 316.456,-239.127 365.618,-300.363\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"363.119,-302.837 372.142,-308.389 368.551,-298.422 363.119,-302.837\"/>\n", - "<text text-anchor=\"middle\" x=\"283.157\" y=\"-155.008\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge29\" class=\"edge\">\n", + "<title>8->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M174.7,-39.03C207.21,-91.23 316.46,-242.1 365.62,-303.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"363.12,-305.81 372.14,-311.36 368.55,-301.4 363.12,-305.81\"/>\n", + "<text text-anchor=\"middle\" x=\"255.66\" y=\"-174.98\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 8->1 -->\n", - "<g id=\"edge60\" class=\"edge\"><title>8->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.765,-23.6993C210.201,-24.8825 233.066,-25.0664 252.188,-24.2509\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.575,-27.7351 262.369,-23.695 252.193,-20.7455 252.575,-27.7351\"/>\n", - "<text text-anchor=\"middle\" x=\"222.477\" y=\"-28.7751\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge30\" class=\"edge\">\n", + "<title>8->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.77,-26.67C210.2,-27.86 233.07,-28.04 252.19,-27.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.57,-30.71 262.37,-26.67 252.19,-23.72 252.57,-30.71\"/>\n", + "<text text-anchor=\"middle\" x=\"207.98\" y=\"-30.75\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->10 -->\n", - "<g id=\"edge62\" class=\"edge\"><title>7->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.4051,-94.7946C150.261,-98.3333 285.946,-98.5227 352.132,-95.3627\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.717,-98.8364 362.514,-94.8038 352.341,-91.8465 352.717,-98.8364\"/>\n", - "<text text-anchor=\"middle\" x=\"222.269\" y=\"-99.8787\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge31\" class=\"edge\">\n", + "<title>7->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.41,-97.77C150.26,-101.31 285.95,-101.5 352.13,-98.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.72,-101.81 362.51,-97.78 352.34,-94.82 352.72,-101.81\"/>\n", + "<text text-anchor=\"middle\" x=\"207.77\" y=\"-101.85\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->9 -->\n", - "<g id=\"edge64\" class=\"edge\"><title>7->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.5773,-103.753C156.985,-128.623 318.479,-181.224 391.371,-201.222\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.484,-204.607 401.05,-203.821 392.3,-197.847 390.484,-204.607\"/>\n", - "<text text-anchor=\"middle\" x=\"245.974\" y=\"-136.287\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge32\" class=\"edge\">\n", + "<title>7->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.58,-106.73C156.98,-131.6 318.48,-184.2 391.37,-204.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.48,-207.58 401.05,-206.8 392.3,-200.82 390.48,-207.58\"/>\n", + "<text text-anchor=\"middle\" x=\"227.47\" y=\"-159.26\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->8 -->\n", - "<g id=\"edge66\" class=\"edge\"><title>7->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.4935,-78.3092C108.013,-68.4325 127.23,-54.5648 142.09,-42.5578\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"144.39,-45.1976 149.846,-36.1159 139.917,-39.8127 144.39,-45.1976\"/>\n", - "<text text-anchor=\"middle\" x=\"109.292\" y=\"-44.2335\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge33\" class=\"edge\">\n", + "<title>7->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.49,-81.28C108.01,-71.41 127.23,-57.54 142.09,-45.53\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"144.39,-48.17 149.85,-39.09 139.92,-42.79 144.39,-48.17\"/>\n", + "<text text-anchor=\"middle\" x=\"131.79\" y=\"-67.21\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->7 -->\n", - "<g id=\"edge68\" class=\"edge\"><title>7->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.5396,-97.5921C102.323,-97.7371 110.299,-95.4893 110.299,-90.8487 110.299,-88.0208 107.337,-86.0815 102.809,-85.0307\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.813,-81.517 92.5396,-84.1053 102.185,-88.4887 102.813,-81.517\"/>\n", - "<text text-anchor=\"middle\" x=\"122.352\" y=\"-86.6487\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge34\" class=\"edge\">\n", + "<title>7->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.54,-100.57C102.32,-100.71 110.3,-98.46 110.3,-93.82 110.3,-91 107.34,-89.06 102.81,-88.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.81,-84.49 92.54,-87.08 102.19,-91.46 102.81,-84.49\"/>\n", + "<text text-anchor=\"middle\" x=\"124.8\" y=\"-90.12\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->6 -->\n", - "<g id=\"edge70\" class=\"edge\"><title>7->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M53.9508,-108.973C45.7672,-128.082 35.727,-158.399 30.1064,-180.608\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"26.6686,-179.939 27.7935,-190.474 33.4838,-181.537 26.6686,-179.939\"/>\n", - "<text text-anchor=\"middle\" x=\"56.0286\" y=\"-144.591\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge35\" class=\"edge\">\n", + "<title>7->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M53.95,-111.95C45.77,-131.06 35.73,-161.37 30.11,-183.58\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"26.67,-182.91 27.79,-193.45 33.48,-184.51 26.67,-182.91\"/>\n", + "<text text-anchor=\"middle\" x=\"27.53\" y=\"-151.57\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->5 -->\n", - "<g id=\"edge72\" class=\"edge\"><title>7->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.4905,-108.956C57.8457,-149.752 57.5879,-249.114 60.7169,-298.197\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"57.2458,-298.714 61.485,-308.423 64.2261,-298.189 57.2458,-298.714\"/>\n", - "<text text-anchor=\"middle\" x=\"48.1037\" y=\"-199.376\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge36\" class=\"edge\">\n", + "<title>7->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.49,-111.93C57.85,-152.73 57.59,-252.09 60.72,-301.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"57.25,-301.69 61.49,-311.4 64.23,-301.16 57.25,-301.69\"/>\n", + "<text text-anchor=\"middle\" x=\"75.6\" y=\"-195.35\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->4 -->\n", - "<g id=\"edge74\" class=\"edge\"><title>7->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M67.6933,-108.899C79.9795,-160.617 128.052,-309.484 152.177,-371.657\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"149.026,-373.204 155.974,-381.203 155.53,-370.617 149.026,-373.204\"/>\n", - "<text text-anchor=\"middle\" x=\"123.935\" y=\"-232.078\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge37\" class=\"edge\">\n", + "<title>7->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M67.69,-111.87C79.98,-163.59 128.05,-312.46 152.18,-374.63\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"149.03,-376.18 155.97,-384.18 155.53,-373.59 149.03,-376.18\"/>\n", + "<text text-anchor=\"middle\" x=\"95.44\" y=\"-247.05\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->3 -->\n", - "<g id=\"edge76\" class=\"edge\"><title>7->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.4284,-108.901C106.943,-161.102 216.188,-311.975 265.351,-373.212\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"262.851,-375.686 271.875,-381.238 268.283,-371.271 262.851,-375.686\"/>\n", - "<text text-anchor=\"middle\" x=\"182.889\" y=\"-227.856\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge38\" class=\"edge\">\n", + "<title>7->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.43,-111.88C106.94,-164.08 216.19,-314.95 265.35,-376.19\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"262.85,-378.66 271.87,-384.21 268.28,-374.25 262.85,-378.66\"/>\n", + "<text text-anchor=\"middle\" x=\"155.39\" y=\"-247.83\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->2 -->\n", - "<g id=\"edge78\" class=\"edge\"><title>7->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M84.4961,-109.196C137.337,-152.521 285.198,-260.253 353.904,-305.846\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.384,-309.035 362.663,-311.6 356.227,-303.184 352.384,-309.035\"/>\n", - "<text text-anchor=\"middle\" x=\"228.2\" y=\"-191.321\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge39\" class=\"edge\">\n", + "<title>7->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M84.5,-112.17C137.34,-155.5 285.2,-263.23 353.9,-308.82\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.38,-312.01 362.66,-314.58 356.23,-306.16 352.38,-312.01\"/>\n", + "<text text-anchor=\"middle\" x=\"233.7\" y=\"-214.3\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 7->1 -->\n", - "<g id=\"edge80\" class=\"edge\"><title>7->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.4067,-86.766C132.581,-76.5952 207.974,-52.354 252.978,-35.3591\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"254.293,-38.6032 262.368,-31.7435 251.778,-32.0707 254.293,-38.6032\"/>\n", - "<text text-anchor=\"middle\" x=\"175.692\" y=\"-68.8626\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge40\" class=\"edge\">\n", + "<title>7->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.41,-89.74C132.58,-79.57 207.97,-55.33 252.98,-38.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"254.29,-41.58 262.37,-34.72 251.78,-35.05 254.29,-41.58\"/>\n", + "<text text-anchor=\"middle\" x=\"187.19\" y=\"-67.84\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->10 -->\n", - "<g id=\"edge82\" class=\"edge\"><title>6->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2339,-203.765C118.571,-186.896 279.962,-134.68 352.937,-107.381\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"354.522,-110.523 362.628,-103.701 352.036,-103.979 354.522,-110.523\"/>\n", - "<text text-anchor=\"middle\" x=\"206.585\" y=\"-163.373\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge41\" class=\"edge\">\n", + "<title>6->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.23,-206.74C118.57,-189.87 279.96,-137.66 352.94,-110.36\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"354.52,-113.5 362.63,-106.68 352.04,-106.95 354.52,-113.5\"/>\n", + "<text text-anchor=\"middle\" x=\"189.09\" y=\"-162.35\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->9 -->\n", - "<g id=\"edge84\" class=\"edge\"><title>6->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2519,-212.334C124.361,-216.34 311.053,-216.508 390.95,-212.839\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"391.237,-216.329 401.045,-212.321 390.879,-209.338 391.237,-216.329\"/>\n", - "<text text-anchor=\"middle\" x=\"222.601\" y=\"-199.386\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge42\" class=\"edge\">\n", + "<title>6->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.25,-215.31C124.36,-219.32 311.05,-219.48 390.95,-215.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"391.24,-219.3 401.05,-215.3 390.88,-212.31 391.24,-219.3\"/>\n", + "<text text-anchor=\"middle\" x=\"208.1\" y=\"-219.36\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->8 -->\n", - "<g id=\"edge86\" class=\"edge\"><title>6->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M45.6538,-190.534C73.9557,-156.746 126.623,-84.4124 151.771,-44.943\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"154.949,-46.4602 157.262,-36.1209 149.007,-42.7612 154.949,-46.4602\"/>\n", - "<text text-anchor=\"middle\" x=\"110.712\" y=\"-122.539\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge43\" class=\"edge\">\n", + "<title>6->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M45.65,-193.51C73.96,-159.72 126.62,-87.39 151.77,-47.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"154.95,-49.44 157.26,-39.1 149.01,-45.74 154.95,-49.44\"/>\n", + "<text text-anchor=\"middle\" x=\"113.21\" y=\"-124.51\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->7 -->\n", - "<g id=\"edge88\" class=\"edge\"><title>6->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M38.348,-190.596C46.5316,-171.487 56.5718,-141.17 62.1924,-118.961\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"65.6302,-119.63 64.5054,-109.095 58.815,-118.033 65.6302,-119.63\"/>\n", - "<text text-anchor=\"middle\" x=\"36.2702\" y=\"-146.578\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge44\" class=\"edge\">\n", + "<title>6->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M38.35,-193.57C46.53,-174.46 56.57,-144.15 62.19,-121.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"65.63,-122.61 64.51,-112.07 58.82,-121.01 65.63,-122.61\"/>\n", + "<text text-anchor=\"middle\" x=\"64.77\" y=\"-161.55\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->6 -->\n", - "<g id=\"edge90\" class=\"edge\"><title>6->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-215.464C64.0239,-215.609 72,-213.361 72,-208.72 72,-205.892 69.0382,-203.953 64.5105,-202.902\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5146,-199.389 54.2408,-201.977 63.8863,-206.36 64.5146,-199.389\"/>\n", - "<text text-anchor=\"middle\" x=\"84.0533\" y=\"-204.52\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge45\" class=\"edge\">\n", + "<title>6->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.24,-218.44C64.02,-218.58 72,-216.34 72,-211.7 72,-208.87 69.04,-206.93 64.51,-205.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.51,-202.36 54.24,-204.95 63.89,-209.34 64.51,-202.36\"/>\n", + "<text text-anchor=\"middle\" x=\"86.5\" y=\"-208\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->5 -->\n", - "<g id=\"edge92\" class=\"edge\"><title>6->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27.7717,-226.864C31.8603,-246.193 41.4949,-276.973 50.1878,-299.238\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"46.9472,-300.56 53.9642,-308.498 53.429,-297.917 46.9472,-300.56\"/>\n", - "<text text-anchor=\"middle\" x=\"52.9798\" y=\"-254.851\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge46\" class=\"edge\">\n", + "<title>6->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27.77,-229.84C31.86,-249.17 41.49,-279.95 50.19,-302.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"46.95,-303.54 53.96,-311.47 53.43,-300.89 46.95,-303.54\"/>\n", + "<text text-anchor=\"middle\" x=\"24.48\" y=\"-269.83\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->4 -->\n", - "<g id=\"edge94\" class=\"edge\"><title>6->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M35.3835,-226.972C56.0001,-261.031 108.635,-334.083 140.398,-373.332\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.786,-375.666 146.84,-381.168 143.193,-371.22 137.786,-375.666\"/>\n", - "<text text-anchor=\"middle\" x=\"100.891\" y=\"-286.952\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge47\" class=\"edge\">\n", + "<title>6->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M35.38,-229.95C56,-264.01 108.64,-337.06 140.4,-376.31\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.79,-378.64 146.84,-384.14 143.19,-374.2 137.79,-378.64\"/>\n", + "<text text-anchor=\"middle\" x=\"73.39\" y=\"-291.93\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge96\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M45.3394,-226.795C88.5513,-262.618 197.064,-341.793 253.784,-379.247\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.138,-382.352 262.425,-384.887 255.964,-376.49 252.138,-382.352\"/>\n", - "<text text-anchor=\"middle\" x=\"140.562\" y=\"-310.821\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge48\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M45.34,-229.77C88.55,-265.59 197.06,-344.77 253.78,-382.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.14,-385.33 262.42,-387.86 255.96,-379.47 252.14,-385.33\"/>\n", + "<text text-anchor=\"middle\" x=\"135.06\" y=\"-309.8\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->2 -->\n", - "<g id=\"edge98\" class=\"edge\"><title>6->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2785,-221.624C118.686,-246.494 280.18,-299.095 353.073,-319.093\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.185,-322.479 362.751,-321.692 354.001,-315.719 352.185,-322.479\"/>\n", - "<text text-anchor=\"middle\" x=\"207.676\" y=\"-254.159\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge49\" class=\"edge\">\n", + "<title>6->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.28,-224.6C118.69,-249.47 280.18,-302.07 353.07,-322.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.19,-325.45 362.75,-324.67 354,-318.69 352.19,-325.45\"/>\n", + "<text text-anchor=\"middle\" x=\"189.18\" y=\"-277.13\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 6->1 -->\n", - "<g id=\"edge100\" class=\"edge\"><title>6->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1328,-194.132C104.841,-161.466 213.165,-82.8769 263.22,-42.5589\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"265.483,-45.2298 271.018,-36.1957 261.058,-39.8062 265.483,-45.2298\"/>\n", - "<text text-anchor=\"middle\" x=\"166.677\" y=\"-126.146\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge50\" class=\"edge\">\n", + "<title>6->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.13,-197.11C104.84,-164.44 213.16,-85.85 263.22,-45.53\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"265.48,-48.2 271.02,-39.17 261.06,-42.78 265.48,-48.2\"/>\n", + "<text text-anchor=\"middle\" x=\"144.18\" y=\"-125.12\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->10 -->\n", - "<g id=\"edge102\" class=\"edge\"><title>5->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.4594,-311.566C153.669,-271.825 301.56,-164.491 362.692,-115.575\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"365.153,-118.085 370.724,-109.073 360.749,-112.644 365.153,-118.085\"/>\n", - "<text text-anchor=\"middle\" x=\"235.576\" y=\"-221.37\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge51\" class=\"edge\">\n", + "<title>5->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.46,-314.54C153.67,-274.8 301.56,-167.47 362.69,-118.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"365.15,-121.06 370.72,-112.05 360.75,-115.62 365.15,-121.06\"/>\n", + "<text text-anchor=\"middle\" x=\"242.08\" y=\"-220.35\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->9 -->\n", - "<g id=\"edge104\" class=\"edge\"><title>5->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.5327,-321.637C156.87,-304.767 318.261,-252.552 391.236,-225.253\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"392.821,-228.395 400.926,-221.572 390.335,-221.851 392.821,-228.395\"/>\n", - "<text text-anchor=\"middle\" x=\"238.884\" y=\"-257.245\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge52\" class=\"edge\">\n", + "<title>5->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.53,-324.61C156.87,-307.74 318.26,-255.53 391.24,-228.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"392.82,-231.37 400.93,-224.55 390.34,-224.83 392.82,-231.37\"/>\n", + "<text text-anchor=\"middle\" x=\"227.38\" y=\"-280.22\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->8 -->\n", - "<g id=\"edge106\" class=\"edge\"><title>5->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.887,-308.366C96.1201,-256.518 144.538,-108.06 160.711,-45.8923\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"164.153,-46.555 163.183,-36.0047 157.362,-44.8574 164.153,-46.555\"/>\n", - "<text text-anchor=\"middle\" x=\"131.799\" y=\"-176.929\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge53\" class=\"edge\">\n", + "<title>5->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.89,-311.34C96.12,-259.49 144.54,-111.03 160.71,-48.87\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"164.15,-49.53 163.18,-38.98 157.36,-47.83 164.15,-49.53\"/>\n", + "<text text-anchor=\"middle\" x=\"132.3\" y=\"-183.9\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->7 -->\n", - "<g id=\"edge108\" class=\"edge\"><title>5->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M69.1071,-308.485C72.7519,-267.689 73.0098,-168.327 69.8807,-119.244\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"73.3518,-118.727 69.1126,-109.017 66.3715,-119.251 73.3518,-118.727\"/>\n", - "<text text-anchor=\"middle\" x=\"56.4939\" y=\"-209.664\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge54\" class=\"edge\">\n", + "<title>5->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M69.11,-311.46C72.75,-270.66 73.01,-171.3 69.88,-122.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"73.35,-121.7 69.11,-111.99 66.37,-122.23 73.35,-121.7\"/>\n", + "<text text-anchor=\"middle\" x=\"83.99\" y=\"-220.64\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->6 -->\n", - "<g id=\"edge110\" class=\"edge\"><title>5->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M64.5272,-308.448C60.4385,-289.12 50.8039,-258.34 42.111,-236.074\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"45.3516,-234.752 38.3347,-226.814 38.8698,-237.395 45.3516,-234.752\"/>\n", - "<text text-anchor=\"middle\" x=\"67.3191\" y=\"-264.061\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge55\" class=\"edge\">\n", + "<title>5->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M64.53,-311.42C60.44,-292.09 50.8,-261.31 42.11,-239.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"45.35,-237.73 38.33,-229.79 38.87,-240.37 45.35,-237.73\"/>\n", + "<text text-anchor=\"middle\" x=\"67.82\" y=\"-264.04\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->5 -->\n", - "<g id=\"edge112\" class=\"edge\"><title>5->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.5396,-333.335C102.323,-333.48 110.299,-331.233 110.299,-326.592 110.299,-323.764 107.337,-321.825 102.809,-320.774\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.813,-317.26 92.5396,-319.849 102.185,-324.232 102.813,-317.26\"/>\n", - "<text text-anchor=\"middle\" x=\"122.352\" y=\"-322.392\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge56\" class=\"edge\">\n", + "<title>5->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.54,-336.31C102.32,-336.46 110.3,-334.21 110.3,-329.57 110.3,-326.74 107.34,-324.8 102.81,-323.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.81,-320.24 92.54,-322.82 102.19,-327.21 102.81,-320.24\"/>\n", + "<text text-anchor=\"middle\" x=\"124.8\" y=\"-325.87\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->4 -->\n", - "<g id=\"edge114\" class=\"edge\"><title>5->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M80.9776,-344.672C94.0749,-355.903 113.156,-370.148 129.904,-381.365\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.12,-384.38 138.405,-386.922 131.95,-378.521 128.12,-384.38\"/>\n", - "<text text-anchor=\"middle\" x=\"96.4407\" y=\"-370.818\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge57\" class=\"edge\">\n", + "<title>5->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M80.98,-347.65C94.07,-358.88 113.16,-373.12 129.9,-384.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.12,-387.35 138.4,-389.9 131.95,-381.5 128.12,-387.35\"/>\n", + "<text text-anchor=\"middle\" x=\"90.94\" y=\"-369.79\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->3 -->\n", - "<g id=\"edge116\" class=\"edge\"><title>5->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.6976,-340.439C132.822,-356.207 207.624,-380.645 252.566,-392.781\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"251.934,-396.233 262.495,-395.383 253.709,-389.462 251.934,-396.233\"/>\n", - "<text text-anchor=\"middle\" x=\"176.632\" y=\"-350.41\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge58\" class=\"edge\">\n", + "<title>5->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.7,-343.41C132.82,-359.18 207.62,-383.62 252.57,-395.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"251.93,-399.21 262.49,-398.36 253.71,-392.44 251.93,-399.21\"/>\n", + "<text text-anchor=\"middle\" x=\"158.13\" y=\"-373.38\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge118\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.4051,-330.538C150.261,-334.077 285.946,-334.266 352.132,-331.106\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.717,-334.58 362.514,-330.547 352.341,-327.59 352.717,-334.58\"/>\n", - "<text text-anchor=\"middle\" x=\"222.269\" y=\"-335.622\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge59\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M92.41,-333.51C150.26,-337.05 285.95,-337.24 352.13,-334.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.72,-337.55 362.51,-333.52 352.34,-330.56 352.72,-337.55\"/>\n", + "<text text-anchor=\"middle\" x=\"207.77\" y=\"-337.6\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 5->1 -->\n", - "<g id=\"edge120\" class=\"edge\"><title>5->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M82.8893,-308.437C125.807,-256.411 234.516,-106.972 274.564,-45.1787\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"277.748,-46.6944 280.17,-36.3802 271.845,-42.9327 277.748,-46.6944\"/>\n", - "<text text-anchor=\"middle\" x=\"165.726\" y=\"-163.608\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge60\" class=\"edge\">\n", + "<title>5->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M82.89,-311.41C125.81,-259.39 234.52,-109.95 274.56,-48.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"277.75,-49.67 280.17,-39.36 271.84,-45.91 277.75,-49.67\"/>\n", + "<text text-anchor=\"middle\" x=\"164.23\" y=\"-183.58\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->10 -->\n", - "<g id=\"edge122\" class=\"edge\"><title>4->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.157,-381.285C226.075,-329.259 334.784,-179.821 374.831,-118.027\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"378.016,-119.543 380.438,-109.229 372.112,-115.781 378.016,-119.543\"/>\n", - "<text text-anchor=\"middle\" x=\"265.994\" y=\"-236.456\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge61\" class=\"edge\">\n", + "<title>4->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.16,-384.26C226.08,-332.23 334.78,-182.8 374.83,-121\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"378.02,-122.52 380.44,-112.2 372.11,-118.76 378.02,-122.52\"/>\n", + "<text text-anchor=\"middle\" x=\"293.49\" y=\"-241.43\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->9 -->\n", - "<g id=\"edge124\" class=\"edge\"><title>4->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.699,-384.852C243.408,-352.186 351.731,-273.597 401.787,-233.279\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"404.05,-235.95 409.585,-226.916 399.624,-230.527 404.05,-235.95\"/>\n", - "<text text-anchor=\"middle\" x=\"289.243\" y=\"-292.866\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge62\" class=\"edge\">\n", + "<title>4->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.7,-387.83C243.41,-355.16 351.73,-276.57 401.79,-236.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"404.05,-238.93 409.58,-229.89 399.62,-233.5 404.05,-238.93\"/>\n", + "<text text-anchor=\"middle\" x=\"311.74\" y=\"-315.84\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->8 -->\n", - "<g id=\"edge126\" class=\"edge\"><title>4->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M168.657,-381.3C173.305,-320.056 173.525,-120.633 169.318,-46.2829\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"172.807,-46.0037 168.665,-36.2521 165.822,-46.4584 172.807,-46.0037\"/>\n", - "<text text-anchor=\"middle\" x=\"181.987\" y=\"-209.591\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge63\" class=\"edge\">\n", + "<title>4->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M168.66,-384.27C173.3,-323.03 173.53,-123.61 169.32,-49.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"172.81,-48.98 168.67,-39.23 165.82,-49.43 172.81,-48.98\"/>\n", + "<text text-anchor=\"middle\" x=\"176.24\" y=\"-205.57\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->7 -->\n", - "<g id=\"edge128\" class=\"edge\"><title>4->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M163.172,-381.39C150.886,-329.673 102.813,-180.805 78.6879,-118.632\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"81.8394,-117.085 74.8917,-109.087 75.3349,-119.672 81.8394,-117.085\"/>\n", - "<text text-anchor=\"middle\" x=\"106.93\" y=\"-249.811\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge64\" class=\"edge\">\n", + "<title>4->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M163.17,-384.36C150.89,-332.65 102.81,-183.78 78.69,-121.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"81.84,-120.06 74.89,-112.06 75.33,-122.65 81.84,-120.06\"/>\n", + "<text text-anchor=\"middle\" x=\"128.18\" y=\"-241.79\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->6 -->\n", - "<g id=\"edge130\" class=\"edge\"><title>4->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.183,-381.189C136.566,-347.13 83.931,-274.078 52.1683,-234.829\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"54.7805,-232.495 45.7263,-226.993 49.3732,-236.941 54.7805,-232.495\"/>\n", - "<text text-anchor=\"middle\" x=\"117.676\" y=\"-294.809\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge65\" class=\"edge\">\n", + "<title>4->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.18,-384.16C136.57,-350.11 83.93,-277.05 52.17,-237.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"54.78,-235.47 45.73,-229.97 49.37,-239.92 54.78,-235.47\"/>\n", + "<text text-anchor=\"middle\" x=\"104.68\" y=\"-299.78\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->5 -->\n", - "<g id=\"edge132\" class=\"edge\"><title>4->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M149.888,-381.36C136.79,-370.13 117.709,-355.885 100.961,-344.668\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.746,-341.653 92.4603,-339.11 98.9152,-347.512 102.746,-341.653\"/>\n", - "<text text-anchor=\"middle\" x=\"116.425\" y=\"-370.814\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge66\" class=\"edge\">\n", + "<title>4->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M149.89,-384.34C136.79,-373.11 117.71,-358.86 100.96,-347.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.75,-344.63 92.46,-342.09 98.92,-350.49 102.75,-344.63\"/>\n", + "<text text-anchor=\"middle\" x=\"110.92\" y=\"-354.79\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->4 -->\n", - "<g id=\"edge134\" class=\"edge\"><title>4->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.807,-406.184C202.59,-406.329 210.566,-404.081 210.566,-399.441 210.566,-396.613 207.605,-394.673 203.077,-393.623\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.081,-390.109 192.807,-392.697 202.453,-397.081 203.081,-390.109\"/>\n", - "<text text-anchor=\"middle\" x=\"222.62\" y=\"-395.241\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge67\" class=\"edge\">\n", + "<title>4->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.81,-409.16C202.59,-409.3 210.57,-407.06 210.57,-402.42 210.57,-399.59 207.6,-397.65 203.08,-396.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.08,-393.08 192.81,-395.67 202.45,-400.06 203.08,-393.08\"/>\n", + "<text text-anchor=\"middle\" x=\"225.07\" y=\"-398.72\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->3 -->\n", - "<g id=\"edge136\" class=\"edge\"><title>4->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.765,-405.14C210.201,-406.323 233.066,-406.507 252.188,-405.692\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.575,-409.176 262.369,-405.136 252.193,-402.186 252.575,-409.176\"/>\n", - "<text text-anchor=\"middle\" x=\"222.477\" y=\"-392.216\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge68\" class=\"edge\">\n", + "<title>4->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.77,-408.12C210.2,-409.3 233.07,-409.48 252.19,-408.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"252.57,-412.15 262.37,-408.11 252.19,-405.16 252.57,-412.15\"/>\n", + "<text text-anchor=\"middle\" x=\"207.98\" y=\"-412.19\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge138\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.674,-395.358C232.849,-385.187 308.241,-360.946 353.245,-343.951\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"354.561,-347.195 362.635,-340.336 352.045,-340.663 354.561,-347.195\"/>\n", - "<text text-anchor=\"middle\" x=\"269.96\" y=\"-353.455\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge69\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.67,-398.33C232.85,-388.16 308.24,-363.92 353.25,-346.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"354.56,-350.17 362.64,-343.31 352.05,-343.64 354.56,-350.17\"/>\n", + "<text text-anchor=\"middle\" x=\"258.46\" y=\"-361.43\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge140\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M174.81,-381.242C199.583,-319.883 264.572,-120.419 284.22,-46.1702\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"287.694,-46.7107 286.78,-36.1555 280.912,-44.9773 287.694,-46.7107\"/>\n", - "<text text-anchor=\"middle\" x=\"243.515\" y=\"-213.506\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge70\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M174.81,-384.22C199.58,-322.86 264.57,-123.39 284.22,-49.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"287.69,-49.69 286.78,-39.13 280.91,-47.95 287.69,-49.69\"/>\n", + "<text text-anchor=\"middle\" x=\"244.02\" y=\"-205.48\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->10 -->\n", - "<g id=\"edge142\" class=\"edge\"><title>3->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M299.092,-381.214C320.325,-329.367 368.743,-180.908 384.916,-118.741\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"388.358,-119.404 387.388,-108.853 381.567,-117.706 388.358,-119.404\"/>\n", - "<text text-anchor=\"middle\" x=\"328.004\" y=\"-241.778\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge71\" class=\"edge\">\n", + "<title>3->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M299.09,-384.19C320.33,-332.34 368.74,-183.88 384.92,-121.72\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"388.36,-122.38 387.39,-111.83 381.57,-120.68 388.36,-122.38\"/>\n", + "<text text-anchor=\"middle\" x=\"356.5\" y=\"-256.75\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->9 -->\n", - "<g id=\"edge144\" class=\"edge\"><title>3->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M308.158,-381.254C336.46,-347.467 389.127,-275.133 414.275,-235.663\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"417.454,-237.181 419.766,-226.841 411.511,-233.482 417.454,-237.181\"/>\n", - "<text text-anchor=\"middle\" x=\"349.217\" y=\"-295.259\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge72\" class=\"edge\">\n", + "<title>3->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M308.16,-384.23C336.46,-350.44 389.13,-278.11 414.28,-238.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"417.45,-240.16 419.77,-229.82 411.51,-236.46 417.45,-240.16\"/>\n", + "<text text-anchor=\"middle\" x=\"375.72\" y=\"-300.23\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->8 -->\n", - "<g id=\"edge146\" class=\"edge\"><title>3->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.803,-381.379C271.845,-320.113 207.112,-120.04 178.634,-45.9285\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.779,-44.3625 174.865,-36.3347 175.264,-46.922 181.779,-44.3625\"/>\n", - "<text text-anchor=\"middle\" x=\"218.718\" y=\"-213.454\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge73\" class=\"edge\">\n", + "<title>3->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.8,-384.35C271.84,-323.09 207.11,-123.01 178.63,-48.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.78,-47.34 174.86,-39.31 175.26,-49.9 181.78,-47.34\"/>\n", + "<text text-anchor=\"middle\" x=\"218.22\" y=\"-220.43\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->7 -->\n", - "<g id=\"edge148\" class=\"edge\"><title>3->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.374,-381.388C247.86,-329.187 138.615,-178.314 89.4523,-117.077\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"91.9517,-114.603 82.9282,-109.051 86.5198,-119.019 91.9517,-114.603\"/>\n", - "<text text-anchor=\"middle\" x=\"171.913\" y=\"-254.033\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge74\" class=\"edge\">\n", + "<title>3->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.37,-384.36C247.86,-332.16 138.61,-181.29 89.45,-120.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"91.95,-117.58 82.93,-112.03 86.52,-121.99 91.95,-117.58\"/>\n", + "<text text-anchor=\"middle\" x=\"199.41\" y=\"-256.01\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->6 -->\n", - "<g id=\"edge150\" class=\"edge\"><title>3->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M271.165,-381.366C227.953,-345.543 119.44,-266.368 62.7196,-228.914\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.3661,-225.809 54.079,-223.274 60.54,-231.671 64.3661,-225.809\"/>\n", - "<text text-anchor=\"middle\" x=\"175.942\" y=\"-288.94\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge75\" class=\"edge\">\n", + "<title>3->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M271.16,-384.34C227.95,-348.52 119.44,-269.34 62.72,-231.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.37,-228.78 54.08,-226.25 60.54,-234.65 64.37,-228.78\"/>\n", + "<text text-anchor=\"middle\" x=\"181.44\" y=\"-311.92\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->5 -->\n", - "<g id=\"edge152\" class=\"edge\"><title>3->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.105,-385.594C221.981,-369.825 147.178,-345.388 102.236,-333.252\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.869,-329.8 92.3082,-330.65 101.094,-336.571 102.869,-329.8\"/>\n", - "<text text-anchor=\"middle\" x=\"178.171\" y=\"-367.223\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge76\" class=\"edge\">\n", + "<title>3->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.11,-388.57C221.98,-372.8 147.18,-348.36 102.24,-336.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.87,-332.77 92.31,-333.62 101.09,-339.55 102.87,-332.77\"/>\n", + "<text text-anchor=\"middle\" x=\"167.67\" y=\"-351.2\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->4 -->\n", - "<g id=\"edge154\" class=\"edge\"><title>3->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.305,-393.741C244.87,-392.558 222.005,-392.374 202.882,-393.19\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.496,-389.706 192.702,-393.746 202.878,-396.695 202.496,-389.706\"/>\n", - "<text text-anchor=\"middle\" x=\"232.594\" y=\"-380.266\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge77\" class=\"edge\">\n", + "<title>3->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.31,-396.72C244.87,-395.53 222,-395.35 202.88,-396.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.5,-392.68 192.7,-396.72 202.88,-399.67 202.5,-392.68\"/>\n", + "<text text-anchor=\"middle\" x=\"247.09\" y=\"-385.24\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge156\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.745,-406.184C326.528,-406.329 334.504,-404.081 334.504,-399.441 334.504,-396.613 331.542,-394.673 327.015,-393.623\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"327.019,-390.109 316.745,-392.697 326.39,-397.081 327.019,-390.109\"/>\n", - "<text text-anchor=\"middle\" x=\"346.557\" y=\"-395.241\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge78\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.74,-409.16C326.53,-409.3 334.5,-407.06 334.5,-402.42 334.5,-399.59 331.54,-397.65 327.01,-396.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"327.02,-393.08 316.74,-395.67 326.39,-400.06 327.02,-393.08\"/>\n", + "<text text-anchor=\"middle\" x=\"349\" y=\"-398.72\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->2 -->\n", - "<g id=\"edge158\" class=\"edge\"><title>3->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.699,-386.901C332.218,-377.025 351.435,-363.157 366.295,-351.15\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"368.595,-353.79 374.051,-344.708 364.122,-348.405 368.595,-353.79\"/>\n", - "<text text-anchor=\"middle\" x=\"333.497\" y=\"-352.825\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge79\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.7,-389.88C332.22,-380 351.44,-366.13 366.3,-354.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"368.59,-356.76 374.05,-347.68 364.12,-351.38 368.59,-356.76\"/>\n", + "<text text-anchor=\"middle\" x=\"356\" y=\"-375.8\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge160\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M292.594,-381.3C297.243,-320.056 297.463,-120.633 293.256,-46.2829\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"296.745,-46.0037 292.603,-36.2521 289.76,-46.4584 296.745,-46.0037\"/>\n", - "<text text-anchor=\"middle\" x=\"279.925\" y=\"-209.591\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge80\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M292.59,-384.27C297.24,-323.03 297.46,-123.61 293.26,-49.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"296.74,-48.98 292.6,-39.23 289.76,-49.43 296.74,-48.98\"/>\n", + "<text text-anchor=\"middle\" x=\"278.42\" y=\"-220.57\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->10 -->\n", - "<g id=\"edge162\" class=\"edge\"><title>2->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M393.58,-308.485C397.225,-267.689 397.483,-168.327 394.354,-119.244\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"397.825,-118.727 393.585,-109.017 390.844,-119.251 397.825,-118.727\"/>\n", - "<text text-anchor=\"middle\" x=\"380.967\" y=\"-209.664\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge81\" class=\"edge\">\n", + "<title>2->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M393.58,-311.46C397.22,-270.66 397.48,-171.3 394.35,-122.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"397.82,-121.7 393.59,-111.99 390.84,-122.23 397.82,-121.7\"/>\n", + "<text text-anchor=\"middle\" x=\"379.47\" y=\"-220.64\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->9 -->\n", - "<g id=\"edge164\" class=\"edge\"><title>2->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.12,-308.467C409.303,-289.359 419.343,-259.042 424.964,-236.832\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"428.402,-237.502 427.277,-226.967 421.587,-235.904 428.402,-237.502\"/>\n", - "<text text-anchor=\"middle\" x=\"399.042\" y=\"-264.45\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge82\" class=\"edge\">\n", + "<title>2->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.12,-311.44C409.3,-292.33 419.34,-262.02 424.96,-239.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"428.4,-240.48 427.28,-229.94 421.59,-238.88 428.4,-240.48\"/>\n", + "<text text-anchor=\"middle\" x=\"427.54\" y=\"-279.42\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->8 -->\n", - "<g id=\"edge166\" class=\"edge\"><title>2->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M380.642,-308.54C348.128,-256.338 238.882,-105.465 189.72,-44.2287\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"192.219,-41.7547 183.196,-36.2025 186.787,-46.17 192.219,-41.7547\"/>\n", - "<text text-anchor=\"middle\" x=\"272.181\" y=\"-181.184\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge83\" class=\"edge\">\n", + "<title>2->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M380.64,-311.51C348.13,-259.31 238.88,-108.44 189.72,-47.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"192.22,-44.73 183.2,-39.18 186.79,-49.15 192.22,-44.73\"/>\n", + "<text text-anchor=\"middle\" x=\"299.68\" y=\"-183.16\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->7 -->\n", - "<g id=\"edge168\" class=\"edge\"><title>2->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M370.574,-308.244C317.734,-264.92 169.872,-157.188 101.167,-111.595\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.687,-108.406 92.4072,-105.841 98.8438,-114.256 102.687,-108.406\"/>\n", - "<text text-anchor=\"middle\" x=\"226.871\" y=\"-217.72\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge84\" class=\"edge\">\n", + "<title>2->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M370.57,-311.22C317.73,-267.9 169.87,-160.16 101.17,-114.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.69,-111.38 92.41,-108.82 98.84,-117.23 102.69,-111.38\"/>\n", + "<text text-anchor=\"middle\" x=\"221.37\" y=\"-201.69\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->6 -->\n", - "<g id=\"edge170\" class=\"edge\"><title>2->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.493,-313.688C298.086,-288.818 136.592,-236.217 63.699,-216.219\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5864,-212.833 54.0208,-213.62 62.7708,-219.594 64.5864,-212.833\"/>\n", - "<text text-anchor=\"middle\" x=\"209.096\" y=\"-272.753\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge85\" class=\"edge\">\n", + "<title>2->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.49,-316.66C298.09,-291.79 136.59,-239.19 63.7,-219.19\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.59,-215.81 54.02,-216.59 62.77,-222.57 64.59,-215.81\"/>\n", + "<text text-anchor=\"middle\" x=\"227.6\" y=\"-256.73\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->5 -->\n", - "<g id=\"edge172\" class=\"edge\"><title>2->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.665,-322.646C304.809,-319.107 169.124,-318.918 102.938,-322.078\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.354,-318.604 92.5561,-322.637 102.73,-325.594 102.354,-318.604\"/>\n", - "<text text-anchor=\"middle\" x=\"232.802\" y=\"-309.162\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge86\" class=\"edge\">\n", + "<title>2->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.67,-325.62C304.81,-322.08 169.12,-321.89 102.94,-325.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.35,-321.58 92.56,-325.61 102.73,-328.57 102.35,-321.58\"/>\n", + "<text text-anchor=\"middle\" x=\"218.3\" y=\"-314.14\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge174\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.664,-330.675C322.489,-340.845 247.097,-365.087 202.093,-382.082\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"200.777,-378.837 192.703,-385.697 203.293,-385.37 200.777,-378.837\"/>\n", - "<text text-anchor=\"middle\" x=\"285.378\" y=\"-364.178\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge87\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.66,-333.65C322.49,-343.82 247.1,-368.06 202.09,-385.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"200.78,-381.81 192.7,-388.67 203.29,-388.35 200.78,-381.81\"/>\n", + "<text text-anchor=\"middle\" x=\"296.88\" y=\"-363.15\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge176\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.577,-339.132C347.058,-349.008 327.841,-362.876 312.981,-374.883\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"310.681,-372.243 305.224,-381.325 315.153,-377.628 310.681,-372.243\"/>\n", - "<text text-anchor=\"middle\" x=\"345.779\" y=\"-364.807\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge88\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M362.58,-342.11C347.06,-351.98 327.84,-365.85 312.98,-377.86\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"310.68,-375.22 305.22,-384.3 315.15,-380.6 310.68,-375.22\"/>\n", + "<text text-anchor=\"middle\" x=\"345.03\" y=\"-348.78\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge178\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M417.012,-333.335C426.796,-333.48 434.772,-331.233 434.772,-326.592 434.772,-323.764 431.81,-321.825 427.282,-320.774\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"427.286,-317.26 417.012,-319.849 426.658,-324.232 427.286,-317.26\"/>\n", - "<text text-anchor=\"middle\" x=\"446.825\" y=\"-322.392\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge89\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M417.01,-336.31C426.8,-336.46 434.77,-334.21 434.77,-329.57 434.77,-326.74 431.81,-324.8 427.28,-323.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"427.29,-320.24 417.01,-322.82 426.66,-327.21 427.29,-320.24\"/>\n", + "<text text-anchor=\"middle\" x=\"449.27\" y=\"-325.87\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge180\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M387.377,-308.541C375.091,-256.824 327.018,-107.957 302.893,-45.7837\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.045,-44.2368 299.097,-36.2379 299.54,-46.8235 306.045,-44.2368\"/>\n", - "<text text-anchor=\"middle\" x=\"331.135\" y=\"-176.962\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge90\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M387.38,-311.52C375.09,-259.8 327.02,-110.93 302.89,-48.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.04,-47.21 299.1,-39.21 299.54,-49.8 306.04,-47.21\"/>\n", + "<text text-anchor=\"middle\" x=\"330.64\" y=\"-183.94\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->10 -->\n", - "<g id=\"edge182\" class=\"edge\"><title>1->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M305.183,-36.0802C318.28,-47.3108 337.361,-61.556 354.109,-72.7727\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.325,-75.7879 362.61,-78.3303 356.155,-69.9288 352.325,-75.7879\"/>\n", - "<text text-anchor=\"middle\" x=\"338.646\" y=\"-38.2265\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge91\" class=\"edge\">\n", + "<title>1->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M305.18,-39.06C318.28,-50.29 337.36,-64.53 354.11,-75.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.32,-78.76 362.61,-81.31 356.16,-72.9 352.32,-78.76\"/>\n", + "<text text-anchor=\"middle\" x=\"315.15\" y=\"-61.2\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->9 -->\n", - "<g id=\"edge184\" class=\"edge\"><title>1->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M297.887,-36.252C318.504,-70.3104 371.139,-143.363 402.902,-182.612\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"400.29,-184.945 409.344,-190.447 405.697,-180.5 400.29,-184.945\"/>\n", - "<text text-anchor=\"middle\" x=\"337.395\" y=\"-114.232\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge92\" class=\"edge\">\n", + "<title>1->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M297.89,-39.23C318.5,-73.29 371.14,-146.34 402.9,-185.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"400.29,-187.92 409.34,-193.42 405.7,-183.48 400.29,-187.92\"/>\n", + "<text text-anchor=\"middle\" x=\"335.89\" y=\"-101.21\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->8 -->\n", - "<g id=\"edge186\" class=\"edge\"><title>1->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.305,-12.3007C244.87,-11.1175 222.005,-10.9336 202.882,-11.7491\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.496,-8.26489 192.702,-12.305 202.878,-15.2545 202.496,-8.26489\"/>\n", - "<text text-anchor=\"middle\" x=\"232.594\" y=\"-16.8249\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge93\" class=\"edge\">\n", + "<title>1->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.31,-15.28C244.87,-14.09 222,-13.91 202.88,-14.72\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.5,-11.24 192.7,-15.28 202.88,-18.23 202.5,-11.24\"/>\n", + "<text text-anchor=\"middle\" x=\"247.09\" y=\"-3.8\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->7 -->\n", - "<g id=\"edge188\" class=\"edge\"><title>1->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.396,-22.0827C222.221,-32.2534 146.829,-56.4946 101.825,-73.4896\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"100.51,-70.2455 92.4353,-77.1051 103.025,-76.778 100.51,-70.2455\"/>\n", - "<text text-anchor=\"middle\" x=\"179.111\" y=\"-31.5861\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge94\" class=\"edge\">\n", + "<title>1->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.4,-25.06C222.22,-35.23 146.83,-59.47 101.83,-76.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"100.51,-73.22 92.44,-80.08 103.03,-79.75 100.51,-73.22\"/>\n", + "<text text-anchor=\"middle\" x=\"167.61\" y=\"-54.56\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->6 -->\n", - "<g id=\"edge190\" class=\"edge\"><title>1->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.371,-32.5882C211.663,-65.2543 103.339,-143.843 53.2837,-184.161\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"51.0207,-181.491 45.4856,-190.525 55.4463,-186.914 51.0207,-181.491\"/>\n", - "<text text-anchor=\"middle\" x=\"165.827\" y=\"-116.175\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge95\" class=\"edge\">\n", + "<title>1->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M262.37,-35.56C211.66,-68.23 103.34,-146.82 53.28,-187.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"51.02,-184.47 45.49,-193.5 55.45,-189.89 51.02,-184.47\"/>\n", + "<text text-anchor=\"middle\" x=\"172.33\" y=\"-100.15\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->5 -->\n", - "<g id=\"edge192\" class=\"edge\"><title>1->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M271.914,-36.1553C228.995,-88.1813 120.287,-237.62 80.2392,-299.413\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.0549,-297.898 74.6328,-308.212 82.9583,-301.659 77.0549,-297.898\"/>\n", - "<text text-anchor=\"middle\" x=\"163.076\" y=\"-154.584\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge96\" class=\"edge\">\n", + "<title>1->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M271.91,-39.13C229,-91.16 120.29,-240.59 80.24,-302.39\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.05,-300.87 74.63,-311.19 82.96,-304.63 77.05,-300.87\"/>\n", + "<text text-anchor=\"middle\" x=\"161.58\" y=\"-159.56\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge194\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.26,-36.1983C255.488,-97.5575 190.498,-297.022 170.85,-371.27\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"167.376,-370.73 168.291,-381.285 174.158,-372.463 167.376,-370.73\"/>\n", - "<text text-anchor=\"middle\" x=\"239.555\" y=\"-203.534\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge97\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.26,-39.17C255.49,-100.53 190.5,-300 170.85,-374.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"167.38,-373.71 168.29,-384.26 174.16,-375.44 167.38,-373.71\"/>\n", + "<text text-anchor=\"middle\" x=\"211.06\" y=\"-195.51\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge196\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.414,-36.1411C281.766,-97.3851 281.545,-296.808 285.752,-371.158\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"282.263,-371.437 286.405,-381.189 289.248,-370.982 282.263,-371.437\"/>\n", - "<text text-anchor=\"middle\" x=\"299.083\" y=\"-199.449\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge98\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.41,-39.12C281.77,-100.36 281.55,-299.78 285.75,-374.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"282.26,-374.41 286.41,-384.16 289.25,-373.96 282.26,-374.41\"/>\n", + "<text text-anchor=\"middle\" x=\"271.58\" y=\"-195.42\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge198\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M291.898,-36.0508C304.185,-87.7681 352.258,-236.635 376.383,-298.808\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"373.231,-300.355 380.179,-308.354 379.736,-297.768 373.231,-300.355\"/>\n", - "<text text-anchor=\"middle\" x=\"348.141\" y=\"-159.23\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge99\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M291.9,-39.03C304.18,-90.74 352.26,-239.61 376.38,-301.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"373.23,-303.33 380.18,-311.33 379.74,-300.74 373.23,-303.33\"/>\n", + "<text text-anchor=\"middle\" x=\"319.64\" y=\"-159.2\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge200\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.745,-24.7434C326.528,-24.8884 334.504,-22.6406 334.504,-18 334.504,-15.1721 331.542,-13.2328 327.015,-12.182\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"327.019,-8.66827 316.745,-11.2566 326.39,-15.64 327.019,-8.66827\"/>\n", - "<text text-anchor=\"middle\" x=\"346.557\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", + "<g id=\"edge100\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.74,-27.72C326.53,-27.86 334.5,-25.62 334.5,-20.98 334.5,-18.15 331.54,-16.21 327.01,-15.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"327.02,-11.64 316.74,-14.23 326.39,-18.62 327.02,-11.64\"/>\n", + "<text text-anchor=\"middle\" x=\"349\" y=\"-17.28\" font-family=\"Times,serif\" font-size=\"14.00\">K10</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -3376,7 +3561,7 @@ "<Dot visualization: expr_as_graph [(\"K10\",(1..10)*(1..10))]>" ] }, - "execution_count": 95, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -3387,7 +3572,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 76, "metadata": {}, "outputs": [ { @@ -3396,2513 +3581,2933 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"906pt\" height=\"846pt\"\n", - " viewBox=\"0.00 0.00 906.25 846.14\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 842.141)\">\n", + "<svg width=\"911pt\" height=\"846pt\"\n", + " viewBox=\"0.00 0.00 911.14 846.14\" 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 842.14)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-842.141 903.248,-842.141 903.248,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-842.14 907.14,-842.14 907.14,4 -4,4\"/>\n", "<!-- 20 -->\n", - "<g id=\"node1\" class=\"node\"><title>20</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"836.511,-313.133 782.511,-313.133 782.511,-277.133 836.511,-277.133 836.511,-313.133\"/>\n", - "<text text-anchor=\"middle\" x=\"809.511\" y=\"-290.933\" font-family=\"Times,serif\" font-size=\"14.00\">20</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>20</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"836.51,-313.13 782.51,-313.13 782.51,-277.13 836.51,-277.13 836.51,-313.13\"/>\n", + "<text text-anchor=\"middle\" x=\"809.51\" y=\"-291.43\" font-family=\"Times,serif\" font-size=\"14.00\">20</text>\n", "</g>\n", "<!-- 20->20 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>20->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M836.752,-301.876C846.535,-302.021 854.511,-299.773 854.511,-295.133 854.511,-292.305 851.549,-290.366 847.022,-289.315\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"847.026,-285.801 836.752,-288.389 846.397,-292.773 847.026,-285.801\"/>\n", - "<text text-anchor=\"middle\" x=\"866.564\" y=\"-290.933\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>20->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M836.75,-301.88C846.54,-302.02 854.51,-299.77 854.51,-295.13 854.51,-292.3 851.55,-290.37 847.02,-289.31\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"847.03,-285.8 836.75,-288.39 846.4,-292.77 847.03,-285.8\"/>\n", + "<text text-anchor=\"middle\" x=\"869.01\" y=\"-291.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19 -->\n", - "<g id=\"node4\" class=\"node\"><title>19</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"856.141,-437.07 802.141,-437.07 802.141,-401.07 856.141,-401.07 856.141,-437.07\"/>\n", - "<text text-anchor=\"middle\" x=\"829.141\" y=\"-414.87\" font-family=\"Times,serif\" font-size=\"14.00\">19</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>19</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"856.14,-437.07 802.14,-437.07 802.14,-401.07 856.14,-401.07 856.14,-437.07\"/>\n", + "<text text-anchor=\"middle\" x=\"829.14\" y=\"-415.37\" font-family=\"Times,serif\" font-size=\"14.00\">19</text>\n", "</g>\n", "<!-- 20->19 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>20->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M807.469,-313.39C808.547,-333.834 813.513,-367.203 818.801,-390.976\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"815.427,-391.915 821.159,-400.826 822.235,-390.286 815.427,-391.915\"/>\n", - "<text text-anchor=\"middle\" x=\"827.135\" y=\"-345.983\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>20->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M807.47,-313.39C808.55,-333.83 813.51,-367.2 818.8,-390.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"815.43,-391.92 821.16,-400.83 822.24,-390.29 815.43,-391.92\"/>\n", + "<text text-anchor=\"middle\" x=\"798.64\" y=\"-355.98\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18 -->\n", - "<g id=\"node6\" class=\"node\"><title>18</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"690.814,-112.598 636.814,-112.598 636.814,-76.5976 690.814,-76.5976 690.814,-112.598\"/>\n", - "<text text-anchor=\"middle\" x=\"663.814\" y=\"-90.3976\" font-family=\"Times,serif\" font-size=\"14.00\">18</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>18</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"690.81,-112.6 636.81,-112.6 636.81,-76.6 690.81,-76.6 690.81,-112.6\"/>\n", + "<text text-anchor=\"middle\" x=\"663.81\" y=\"-90.9\" font-family=\"Times,serif\" font-size=\"14.00\">18</text>\n", "</g>\n", "<!-- 20->18 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>20->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M800.971,-276.782C779.186,-240.931 722.113,-161.792 688.764,-120.586\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"691.283,-118.138 682.228,-112.636 685.875,-122.583 691.283,-118.138\"/>\n", - "<text text-anchor=\"middle\" x=\"757.868\" y=\"-185.484\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>20->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M800.97,-276.78C779.19,-240.93 722.11,-161.79 688.76,-120.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"691.28,-118.14 682.23,-112.64 685.88,-122.58 691.28,-118.14\"/>\n", + "<text text-anchor=\"middle\" x=\"730.37\" y=\"-202.48\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17 -->\n", - "<g id=\"node8\" class=\"node\"><title>17</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"579.008,-55.6298 525.008,-55.6298 525.008,-19.6298 579.008,-19.6298 579.008,-55.6298\"/>\n", - "<text text-anchor=\"middle\" x=\"552.008\" y=\"-33.4298\" font-family=\"Times,serif\" font-size=\"14.00\">17</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>17</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"579.01,-55.63 525.01,-55.63 525.01,-19.63 579.01,-19.63 579.01,-55.63\"/>\n", + "<text text-anchor=\"middle\" x=\"552.01\" y=\"-33.93\" font-family=\"Times,serif\" font-size=\"14.00\">17</text>\n", "</g>\n", "<!-- 20->17 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>20->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M796.23,-276.973C756.752,-231.768 640.093,-114.652 583.453,-62.8258\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"585.635,-60.0797 575.874,-55.9605 580.936,-65.2679 585.635,-60.0797\"/>\n", - "<text text-anchor=\"middle\" x=\"678.842\" y=\"-176.699\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>20->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M796.23,-276.97C756.75,-231.77 640.09,-114.65 583.45,-62.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"585.63,-60.08 575.87,-55.96 580.94,-65.27 585.63,-60.08\"/>\n", + "<text text-anchor=\"middle\" x=\"675.34\" y=\"-173.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16 -->\n", - "<g id=\"node10\" class=\"node\"><title>16</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-36 401.07,-36 401.07,-0 455.07,-0 455.07,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"428.07\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">16</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>16</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-36 401.07,-36 401.07,0 455.07,0 455.07,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"428.07\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">16</text>\n", "</g>\n", "<!-- 20->16 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>20->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M790.137,-276.954C729.456,-227.52 542.818,-91.6289 463.872,-39.0347\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.511,-35.9231 455.238,-33.3347 461.655,-41.765 465.511,-35.9231\"/>\n", - "<text text-anchor=\"middle\" x=\"619.005\" y=\"-165.794\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>20->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M790.14,-276.95C729.46,-227.52 542.82,-91.63 463.87,-39.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.51,-35.92 455.24,-33.33 461.65,-41.76 465.51,-35.92\"/>\n", + "<text text-anchor=\"middle\" x=\"612.5\" y=\"-161.79\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15 -->\n", - "<g id=\"node12\" class=\"node\"><title>15</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"331.133,-55.6298 277.133,-55.6298 277.133,-19.6298 331.133,-19.6298 331.133,-55.6298\"/>\n", - "<text text-anchor=\"middle\" x=\"304.133\" y=\"-33.4298\" font-family=\"Times,serif\" font-size=\"14.00\">15</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>15</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"331.13,-55.63 277.13,-55.63 277.13,-19.63 331.13,-19.63 331.13,-55.63\"/>\n", + "<text text-anchor=\"middle\" x=\"304.13\" y=\"-33.93\" font-family=\"Times,serif\" font-size=\"14.00\">15</text>\n", "</g>\n", "<!-- 20->15 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>20->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.407,-277.576C697.52,-229.33 436.904,-96.4305 340.477,-52.074\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.688,-48.78 331.136,-47.8243 338.789,-55.1515 341.688,-48.78\"/>\n", - "<text text-anchor=\"middle\" x=\"555.442\" y=\"-172.625\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>20->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.41,-277.58C697.52,-229.33 436.9,-96.43 340.48,-52.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.69,-48.78 331.14,-47.82 338.79,-55.15 341.69,-48.78\"/>\n", + "<text text-anchor=\"middle\" x=\"546.94\" y=\"-153.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14 -->\n", - "<g id=\"node14\" class=\"node\"><title>14</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"219.327,-112.598 165.327,-112.598 165.327,-76.5976 219.327,-76.5976 219.327,-112.598\"/>\n", - "<text text-anchor=\"middle\" x=\"192.327\" y=\"-90.3976\" font-family=\"Times,serif\" font-size=\"14.00\">14</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>14</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"219.33,-112.6 165.33,-112.6 165.33,-76.6 219.33,-76.6 219.33,-112.6\"/>\n", + "<text text-anchor=\"middle\" x=\"192.33\" y=\"-90.9\" font-family=\"Times,serif\" font-size=\"14.00\">14</text>\n", "</g>\n", "<!-- 20->14 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>20->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.325,-283.112C683.43,-245.892 342.78,-135.085 229.373,-103.079\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"230.003,-99.6211 219.431,-100.316 228.129,-106.366 230.003,-99.6211\"/>\n", - "<text text-anchor=\"middle\" x=\"509.849\" y=\"-176.895\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>20->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.33,-283.11C683.43,-245.89 342.78,-135.09 229.37,-103.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"230,-99.62 219.43,-100.32 228.13,-106.37 230,-99.62\"/>\n", + "<text text-anchor=\"middle\" x=\"491.35\" y=\"-181.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13 -->\n", - "<g id=\"node16\" class=\"node\"><title>13</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"130.598,-201.327 76.5976,-201.327 76.5976,-165.327 130.598,-165.327 130.598,-201.327\"/>\n", - "<text text-anchor=\"middle\" x=\"103.598\" y=\"-179.127\" font-family=\"Times,serif\" font-size=\"14.00\">13</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>13</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"130.6,-201.33 76.6,-201.33 76.6,-165.33 130.6,-165.33 130.6,-201.33\"/>\n", + "<text text-anchor=\"middle\" x=\"103.6\" y=\"-179.63\" font-family=\"Times,serif\" font-size=\"14.00\">13</text>\n", "</g>\n", "<!-- 20->13 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>20->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.282,-287.951C673.104,-265.507 266.918,-201.042 141.036,-185.993\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.093,-182.476 130.758,-184.805 140.29,-189.43 141.093,-182.476\"/>\n", - "<text text-anchor=\"middle\" x=\"460.659\" y=\"-243.772\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>20->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.28,-287.95C673.1,-265.51 266.92,-201.04 141.04,-185.99\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.09,-182.48 130.76,-184.8 140.29,-189.43 141.09,-182.48\"/>\n", + "<text text-anchor=\"middle\" x=\"447.16\" y=\"-225.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12 -->\n", - "<g id=\"node18\" class=\"node\"><title>12</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"73.6298,-313.133 19.6298,-313.133 19.6298,-277.133 73.6298,-277.133 73.6298,-313.133\"/>\n", - "<text text-anchor=\"middle\" x=\"46.6298\" y=\"-290.933\" font-family=\"Times,serif\" font-size=\"14.00\">12</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>12</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"73.63,-313.13 19.63,-313.13 19.63,-277.13 73.63,-277.13 73.63,-313.13\"/>\n", + "<text text-anchor=\"middle\" x=\"46.63\" y=\"-291.43\" font-family=\"Times,serif\" font-size=\"14.00\">12</text>\n", "</g>\n", "<!-- 20->12 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>20->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.36,-292.421C666.971,-287.18 217.12,-287.041 83.9616,-292.003\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.7013,-288.511 73.8531,-292.417 83.9881,-295.505 83.7013,-288.511\"/>\n", - "<text text-anchor=\"middle\" x=\"433.161\" y=\"-279.012\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>20->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.36,-292.42C666.97,-287.18 217.12,-287.04 83.96,-292\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.7,-288.51 73.85,-292.42 83.99,-295.5 83.7,-288.51\"/>\n", + "<text text-anchor=\"middle\" x=\"418.66\" y=\"-281.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11 -->\n", - "<g id=\"node20\" class=\"node\"><title>11</title>\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>11</title>\n", "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-437.07 0,-437.07 0,-401.07 54,-401.07 54,-437.07\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-414.87\" font-family=\"Times,serif\" font-size=\"14.00\">11</text>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-415.37\" font-family=\"Times,serif\" font-size=\"14.00\">11</text>\n", "</g>\n", "<!-- 20->11 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>20->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.157,-296.761C664.252,-310.079 199.356,-383.565 64.0981,-410.052\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.332,-406.636 54.2099,-412.025 64.7014,-413.501 63.332,-406.636\"/>\n", - "<text text-anchor=\"middle\" x=\"424.128\" y=\"-360.206\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>20->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.16,-296.76C664.25,-310.08 199.36,-383.57 64.1,-410.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.33,-406.64 54.21,-412.02 64.7,-413.5 63.33,-406.64\"/>\n", + "<text text-anchor=\"middle\" x=\"408.63\" y=\"-342.21\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10 -->\n", - "<g id=\"node22\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"73.6298,-561.008 19.6298,-561.008 19.6298,-525.008 73.6298,-525.008 73.6298,-561.008\"/>\n", - "<text text-anchor=\"middle\" x=\"46.6298\" y=\"-538.808\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node11\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"73.63,-561.01 19.63,-561.01 19.63,-525.01 73.63,-525.01 73.63,-561.01\"/>\n", + "<text text-anchor=\"middle\" x=\"46.63\" y=\"-539.31\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 20->10 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>20->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.426,-301.125C667.038,-333.073 216.432,-479.314 83.6419,-527.666\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.0987,-524.504 73.9222,-531.242 84.5157,-531.074 82.0987,-524.504\"/>\n", - "<text text-anchor=\"middle\" x=\"430.034\" y=\"-398.195\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>20->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.43,-301.12C667.04,-333.07 216.43,-479.31 83.64,-527.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.1,-524.5 73.92,-531.24 84.52,-531.07 82.1,-524.5\"/>\n", + "<text text-anchor=\"middle\" x=\"447.53\" y=\"-403.2\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9 -->\n", - "<g id=\"node24\" class=\"node\"><title>9</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"130.598,-672.814 76.5976,-672.814 76.5976,-636.814 130.598,-636.814 130.598,-672.814\"/>\n", - "<text text-anchor=\"middle\" x=\"103.598\" y=\"-650.614\" font-family=\"Times,serif\" font-size=\"14.00\">9</text>\n", + "<g id=\"node12\" class=\"node\">\n", + "<title>9</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"130.6,-672.81 76.6,-672.81 76.6,-636.81 130.6,-636.81 130.6,-672.81\"/>\n", + "<text text-anchor=\"middle\" x=\"103.6\" y=\"-651.11\" font-family=\"Times,serif\" font-size=\"14.00\">9</text>\n", "</g>\n", "<!-- 20->9 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>20->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.3,-305.908C672.697,-355.961 263.736,-564.154 139.561,-632.85\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.815,-629.816 130.783,-637.74 141.222,-635.931 137.815,-629.816\"/>\n", - "<text text-anchor=\"middle\" x=\"466.931\" y=\"-477.179\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>20->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.3,-305.91C672.7,-355.96 263.74,-564.15 139.56,-632.85\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.82,-629.82 130.78,-637.74 141.22,-635.93 137.82,-629.82\"/>\n", + "<text text-anchor=\"middle\" x=\"446.43\" y=\"-458.18\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8 -->\n", - "<g id=\"node26\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"219.327,-761.543 165.327,-761.543 165.327,-725.543 219.327,-725.543 219.327,-761.543\"/>\n", - "<text text-anchor=\"middle\" x=\"192.327\" y=\"-739.343\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node13\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"219.33,-761.54 165.33,-761.54 165.33,-725.54 219.33,-725.54 219.33,-761.54\"/>\n", + "<text text-anchor=\"middle\" x=\"192.33\" y=\"-739.84\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 20->8 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>20->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.465,-311.206C681.09,-378.605 324.521,-637.568 220.796,-718.984\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"218.33,-716.472 212.659,-725.422 222.673,-721.962 218.33,-716.472\"/>\n", - "<text text-anchor=\"middle\" x=\"493.631\" y=\"-498.895\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>20->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.47,-311.21C681.09,-378.6 324.52,-637.57 220.8,-718.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"218.33,-716.47 212.66,-725.42 222.67,-721.96 218.33,-716.47\"/>\n", + "<text text-anchor=\"middle\" x=\"487.13\" y=\"-503.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7 -->\n", - "<g id=\"node28\" class=\"node\"><title>7</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"331.133,-818.511 277.133,-818.511 277.133,-782.511 331.133,-782.511 331.133,-818.511\"/>\n", - "<text text-anchor=\"middle\" x=\"304.133\" y=\"-796.311\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", + "<g id=\"node14\" class=\"node\">\n", + "<title>7</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"331.13,-818.51 277.13,-818.51 277.13,-782.51 331.13,-782.51 331.13,-818.51\"/>\n", + "<text text-anchor=\"middle\" x=\"304.13\" y=\"-796.81\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", "</g>\n", "<!-- 20->7 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>20->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M787.37,-313.238C703.642,-389.716 407.599,-685.664 325.388,-774.936\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"322.694,-772.696 318.541,-782.442 327.866,-777.413 322.694,-772.696\"/>\n", - "<text text-anchor=\"middle\" x=\"567.379\" y=\"-550.887\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>20->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M787.37,-313.24C703.64,-389.72 407.6,-685.66 325.39,-774.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"322.69,-772.7 318.54,-782.44 327.87,-777.41 322.69,-772.7\"/>\n", + "<text text-anchor=\"middle\" x=\"541.88\" y=\"-547.89\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node30\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-838.141 401.07,-838.141 401.07,-802.141 455.07,-802.141 455.07,-838.141\"/>\n", - "<text text-anchor=\"middle\" x=\"428.07\" y=\"-815.941\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node15\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"455.07,-838.14 401.07,-838.14 401.07,-802.14 455.07,-802.14 455.07,-838.14\"/>\n", + "<text text-anchor=\"middle\" x=\"428.07\" y=\"-816.44\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 20->6 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>20->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M792.764,-313.431C729.314,-391.96 505.3,-700.119 443.729,-793.329\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"440.664,-791.621 438.131,-801.909 446.526,-795.447 440.664,-791.621\"/>\n", - "<text text-anchor=\"middle\" x=\"605.247\" y=\"-540.18\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>20->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M792.76,-313.43C729.31,-391.96 505.3,-700.12 443.73,-793.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"440.66,-791.62 438.13,-801.91 446.53,-795.45 440.66,-791.62\"/>\n", + "<text text-anchor=\"middle\" x=\"603.75\" y=\"-557.18\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node32\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"579.008,-818.511 525.008,-818.511 525.008,-782.511 579.008,-782.511 579.008,-818.511\"/>\n", - "<text text-anchor=\"middle\" x=\"552.008\" y=\"-796.311\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node16\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"579.01,-818.51 525.01,-818.51 525.01,-782.51 579.01,-782.51 579.01,-818.51\"/>\n", + "<text text-anchor=\"middle\" x=\"552.01\" y=\"-796.81\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 20->5 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>20->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M797.068,-313.357C752.552,-389.452 603.467,-681.765 562.385,-773.102\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"559.071,-771.943 558.231,-782.504 565.474,-774.771 559.071,-771.943\"/>\n", - "<text text-anchor=\"middle\" x=\"693.726\" y=\"-546.03\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>20->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M797.07,-313.36C752.55,-389.45 603.47,-681.77 562.38,-773.1\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"559.07,-771.94 558.23,-782.5 565.47,-774.77 559.07,-771.94\"/>\n", + "<text text-anchor=\"middle\" x=\"665.23\" y=\"-547.03\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node34\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"690.814,-761.543 636.814,-761.543 636.814,-725.543 690.814,-725.543 690.814,-761.543\"/>\n", - "<text text-anchor=\"middle\" x=\"663.814\" y=\"-739.343\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node17\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"690.81,-761.54 636.81,-761.54 636.81,-725.54 690.81,-725.54 690.81,-761.54\"/>\n", + "<text text-anchor=\"middle\" x=\"663.81\" y=\"-739.84\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 20->4 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>20->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M800.554,-313.208C772.866,-382.505 691.821,-631.404 669.311,-715.538\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"665.875,-714.844 666.752,-725.403 672.651,-716.602 665.875,-714.844\"/>\n", - "<text text-anchor=\"middle\" x=\"720.932\" y=\"-506.173\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>20->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M800.55,-313.21C772.87,-382.5 691.82,-631.4 669.31,-715.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"665.87,-714.84 666.75,-725.4 672.65,-716.6 665.87,-714.84\"/>\n", + "<text text-anchor=\"middle\" x=\"720.43\" y=\"-518.17\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node36\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"779.543,-672.814 725.543,-672.814 725.543,-636.814 779.543,-636.814 779.543,-672.814\"/>\n", - "<text text-anchor=\"middle\" x=\"752.543\" y=\"-650.614\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node18\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"779.54,-672.81 725.54,-672.81 725.54,-636.81 779.54,-636.81 779.54,-672.81\"/>\n", + "<text text-anchor=\"middle\" x=\"752.54\" y=\"-651.11\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 20->3 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>20->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M803.343,-313.46C789.496,-372.151 760.224,-555.718 753.162,-626.547\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"749.674,-626.256 752.255,-636.531 756.645,-626.889 749.674,-626.256\"/>\n", - "<text text-anchor=\"middle\" x=\"764.253\" y=\"-463.803\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>20->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M803.34,-313.46C789.5,-372.15 760.22,-555.72 753.16,-626.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"749.67,-626.26 752.26,-636.53 756.65,-626.89 749.67,-626.26\"/>\n", + "<text text-anchor=\"middle\" x=\"763.75\" y=\"-473.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node38\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"836.511,-561.008 782.511,-561.008 782.511,-525.008 836.511,-525.008 836.511,-561.008\"/>\n", - "<text text-anchor=\"middle\" x=\"809.511\" y=\"-538.808\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node19\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"836.51,-561.01 782.51,-561.01 782.51,-525.01 836.51,-525.01 836.51,-561.01\"/>\n", + "<text text-anchor=\"middle\" x=\"809.51\" y=\"-539.31\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 20->2 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>20->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M805.773,-313.36C802.025,-356.155 801.775,-463.316 805.024,-514.683\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"801.541,-515.041 805.771,-524.754 808.522,-514.523 801.541,-515.041\"/>\n", - "<text text-anchor=\"middle\" x=\"818.398\" y=\"-409.822\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>20->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M805.77,-313.36C802.02,-356.16 801.78,-463.32 805.02,-514.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"801.54,-515.04 805.77,-524.75 808.52,-514.52 801.54,-515.04\"/>\n", + "<text text-anchor=\"middle\" x=\"790.9\" y=\"-402.82\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node40\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"779.543,-201.327 725.543,-201.327 725.543,-165.327 779.543,-165.327 779.543,-201.327\"/>\n", - "<text text-anchor=\"middle\" x=\"752.543\" y=\"-179.127\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node20\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"779.54,-201.33 725.54,-201.33 725.54,-165.33 779.54,-165.33 779.54,-201.33\"/>\n", + "<text text-anchor=\"middle\" x=\"752.54\" y=\"-179.63\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 20->1 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>20->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M805.715,-276.889C798.709,-258.728 784.866,-230.73 772.937,-210.072\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.919,-208.239 767.796,-201.438 769.905,-211.82 775.919,-208.239\"/>\n", - "<text text-anchor=\"middle\" x=\"775.326\" y=\"-245.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>20->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M805.72,-276.89C798.71,-258.73 784.87,-230.73 772.94,-210.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.92,-208.24 767.8,-201.44 769.91,-211.82 775.92,-208.24\"/>\n", + "<text text-anchor=\"middle\" x=\"774.83\" y=\"-247.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->20 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>19->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M831.183,-400.814C830.105,-380.369 825.139,-347 819.851,-323.228\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"823.225,-322.288 817.493,-313.377 816.417,-323.917 823.225,-322.288\"/>\n", - "<text text-anchor=\"middle\" x=\"811.517\" y=\"-359.821\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>19->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M831.18,-400.81C830.11,-380.37 825.14,-347 819.85,-323.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"823.22,-322.29 817.49,-313.38 816.42,-323.92 823.22,-322.29\"/>\n", + "<text text-anchor=\"middle\" x=\"840.02\" y=\"-365.82\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->19 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>19->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.382,-425.814C866.165,-425.959 874.141,-423.711 874.141,-419.07 874.141,-416.243 871.179,-414.303 866.651,-413.252\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"866.655,-409.739 856.382,-412.327 866.027,-416.71 866.655,-409.739\"/>\n", - "<text text-anchor=\"middle\" x=\"886.194\" y=\"-414.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>19->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.38,-425.81C866.16,-425.96 874.14,-423.71 874.14,-419.07 874.14,-416.24 871.18,-414.3 866.65,-413.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"866.66,-409.74 856.38,-412.33 866.03,-416.71 866.66,-409.74\"/>\n", + "<text text-anchor=\"middle\" x=\"888.64\" y=\"-415.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->18 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>19->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M823.358,-400.618C800.502,-346.044 718.996,-185.482 682.007,-121.409\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"684.965,-119.534 676.885,-112.68 678.927,-123.076 684.965,-119.534\"/>\n", - "<text text-anchor=\"middle\" x=\"766.683\" y=\"-249.814\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>19->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M823.36,-400.62C800.5,-346.04 719,-185.48 682.01,-121.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"684.96,-119.53 676.89,-112.68 678.93,-123.08 684.96,-119.53\"/>\n", + "<text text-anchor=\"middle\" x=\"738.18\" y=\"-264.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->17 -->\n", - "<g id=\"edge48\" class=\"edge\"><title>19->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M819.622,-400.945C780.578,-339.077 633.758,-136.54 575.701,-63.8446\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"578.081,-61.2207 569.074,-55.6412 572.636,-65.6195 578.081,-61.2207\"/>\n", - "<text text-anchor=\"middle\" x=\"684.662\" y=\"-237.195\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>19->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M819.62,-400.94C780.58,-339.08 633.76,-136.54 575.7,-63.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"578.08,-61.22 569.07,-55.64 572.64,-65.62 578.08,-61.22\"/>\n", + "<text text-anchor=\"middle\" x=\"683.16\" y=\"-236.19\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->16 -->\n", - "<g id=\"edge50\" class=\"edge\"><title>19->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M814.954,-400.819C757.137,-336.079 539.449,-118.025 458.531,-43.3001\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"460.429,-40.2923 450.691,-36.1203 455.702,-45.4549 460.429,-40.2923\"/>\n", - "<text text-anchor=\"middle\" x=\"625.743\" y=\"-228.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>19->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M814.95,-400.82C757.14,-336.08 539.45,-118.03 458.53,-43.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"460.43,-40.29 450.69,-36.12 455.7,-45.45 460.43,-40.29\"/>\n", + "<text text-anchor=\"middle\" x=\"622.24\" y=\"-225.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->15 -->\n", - "<g id=\"edge52\" class=\"edge\"><title>19->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M809.282,-401.065C730.712,-337.894 441.394,-127.435 339.714,-59.1335\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.574,-56.1665 331.312,-53.5308 337.69,-61.9905 341.574,-56.1665\"/>\n", - "<text text-anchor=\"middle\" x=\"582.498\" y=\"-213.899\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge26\" class=\"edge\">\n", + "<title>19->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M809.28,-401.07C730.71,-337.89 441.39,-127.44 339.71,-59.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.57,-56.17 331.31,-53.53 337.69,-61.99 341.57,-56.17\"/>\n", + "<text text-anchor=\"middle\" x=\"560\" y=\"-233.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->14 -->\n", - "<g id=\"edge54\" class=\"edge\"><title>19->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.909,-401.814C700.434,-344.625 344.411,-163.116 228.838,-109.502\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"230.22,-106.286 219.672,-105.289 227.296,-112.646 230.22,-106.286\"/>\n", - "<text text-anchor=\"middle\" x=\"509.373\" y=\"-263.458\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge27\" class=\"edge\">\n", + "<title>19->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.91,-401.81C700.43,-344.62 344.41,-163.12 228.84,-109.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"230.22,-106.29 219.67,-105.29 227.3,-112.65 230.22,-106.29\"/>\n", + "<text text-anchor=\"middle\" x=\"500.87\" y=\"-244.46\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->13 -->\n", - "<g id=\"edge56\" class=\"edge\"><title>19->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.013,-407.298C690.639,-365.711 268.475,-228.425 140.551,-192.024\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.391,-188.624 130.817,-189.292 139.5,-195.364 141.391,-188.624\"/>\n", - "<text text-anchor=\"middle\" x=\"475.282\" y=\"-283.461\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge28\" class=\"edge\">\n", + "<title>19->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.01,-407.3C690.64,-365.71 268.48,-228.42 140.55,-192.02\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.39,-188.62 130.82,-189.29 139.5,-195.36 141.39,-188.62\"/>\n", + "<text text-anchor=\"middle\" x=\"456.78\" y=\"-288.46\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->12 -->\n", - "<g id=\"edge58\" class=\"edge\"><title>19->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.715,-411.981C683.782,-387.978 219.669,-314.346 84.0385,-297.94\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.0949,-294.423 73.7555,-296.735 83.2802,-301.375 84.0949,-294.423\"/>\n", - "<text text-anchor=\"middle\" x=\"441.877\" y=\"-361.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge29\" class=\"edge\">\n", + "<title>19->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.72,-411.98C683.78,-387.98 219.67,-314.35 84.04,-297.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.09,-294.42 73.76,-296.74 83.28,-301.38 84.09,-294.42\"/>\n", + "<text text-anchor=\"middle\" x=\"457.38\" y=\"-343.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->11 -->\n", - "<g id=\"edge60\" class=\"edge\"><title>19->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.993,-416.42C682.368,-411.093 202.135,-410.958 64.2117,-416.014\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.9925,-412.52 54.1415,-416.42 64.2744,-419.514 63.9925,-412.52\"/>\n", - "<text text-anchor=\"middle\" x=\"433.102\" y=\"-421.017\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge30\" class=\"edge\">\n", + "<title>19->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.99,-416.42C682.37,-411.09 202.14,-410.96 64.21,-416.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.99,-412.52 54.14,-416.42 64.27,-419.51 63.99,-412.52\"/>\n", + "<text text-anchor=\"middle\" x=\"418.6\" y=\"-420.02\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->10 -->\n", - "<g id=\"edge62\" class=\"edge\"><title>19->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.787,-420.698C683.881,-434.017 218.986,-507.503 83.7278,-533.99\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.9618,-530.574 73.8397,-535.962 84.3312,-537.438 82.9618,-530.574\"/>\n", - "<text text-anchor=\"middle\" x=\"443.758\" y=\"-484.144\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge31\" class=\"edge\">\n", + "<title>19->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.79,-420.7C683.88,-434.02 218.99,-507.5 83.73,-533.99\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.96,-530.57 73.84,-535.96 84.33,-537.44 82.96,-530.57\"/>\n", + "<text text-anchor=\"middle\" x=\"428.26\" y=\"-481.14\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->9 -->\n", - "<g id=\"edge64\" class=\"edge\"><title>19->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.045,-425.001C690.741,-455.713 268.638,-592.689 140.619,-639.393\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.049,-636.241 130.877,-642.984 141.471,-642.809 139.049,-636.241\"/>\n", - "<text text-anchor=\"middle\" x=\"474.332\" y=\"-539.997\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge32\" class=\"edge\">\n", + "<title>19->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.05,-425C690.74,-455.71 268.64,-592.69 140.62,-639.39\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.05,-636.24 130.88,-642.98 141.47,-642.81 139.05,-636.24\"/>\n", + "<text text-anchor=\"middle\" x=\"456.83\" y=\"-521\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->8 -->\n", - "<g id=\"edge66\" class=\"edge\"><title>19->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.084,-429.632C700.702,-475.691 343.477,-657.51 228.352,-721.373\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"226.564,-718.363 219.542,-726.297 229.979,-724.474 226.564,-718.363\"/>\n", - "<text text-anchor=\"middle\" x=\"521.218\" y=\"-583.302\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge33\" class=\"edge\">\n", + "<title>19->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M802.08,-429.63C700.7,-475.69 343.48,-657.51 228.35,-721.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"226.56,-718.36 219.54,-726.3 229.98,-724.47 226.56,-718.36\"/>\n", + "<text text-anchor=\"middle\" x=\"500.72\" y=\"-564.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->7 -->\n", - "<g id=\"edge68\" class=\"edge\"><title>19->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.991,-434.952C711.89,-494.517 423.642,-703.841 332.205,-775.97\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"329.875,-773.351 324.228,-782.316 334.233,-778.829 329.875,-773.351\"/>\n", - "<text text-anchor=\"middle\" x=\"559.098\" y=\"-589.261\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge34\" class=\"edge\">\n", + "<title>19->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M801.99,-434.95C711.89,-494.52 423.64,-703.84 332.2,-775.97\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"329.88,-773.35 324.23,-782.32 334.23,-778.83 329.88,-773.35\"/>\n", + "<text text-anchor=\"middle\" x=\"552.6\" y=\"-594.26\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->6 -->\n", - "<g id=\"edge70\" class=\"edge\"><title>19->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M806.447,-437.258C735.37,-501.716 518.247,-718.741 449.267,-794.143\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"446.447,-792.044 442.332,-801.807 451.637,-796.741 446.447,-792.044\"/>\n", - "<text text-anchor=\"middle\" x=\"638.857\" y=\"-622.5\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge35\" class=\"edge\">\n", + "<title>19->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M806.45,-437.26C735.37,-501.72 518.25,-718.74 449.27,-794.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"446.45,-792.04 442.33,-801.81 451.64,-796.74 446.45,-792.04\"/>\n", + "<text text-anchor=\"middle\" x=\"613.36\" y=\"-619.5\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->5 -->\n", - "<g id=\"edge72\" class=\"edge\"><title>19->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M812.022,-437.146C761.64,-498.691 615.335,-699.872 567.327,-773.368\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"564.191,-771.774 561.722,-782.077 570.077,-775.562 564.191,-771.774\"/>\n", - "<text text-anchor=\"middle\" x=\"702.675\" y=\"-610.057\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge36\" class=\"edge\">\n", + "<title>19->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M812.02,-437.15C761.64,-498.69 615.33,-699.87 567.33,-773.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"564.19,-771.77 561.72,-782.08 570.08,-775.56 564.19,-771.77\"/>\n", + "<text text-anchor=\"middle\" x=\"675.17\" y=\"-609.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->4 -->\n", - "<g id=\"edge74\" class=\"edge\"><title>19->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M815.974,-437.313C783.636,-491.413 702.176,-650.972 673.615,-715.764\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"670.242,-714.749 669.501,-725.318 676.671,-717.517 670.242,-714.749\"/>\n", - "<text text-anchor=\"middle\" x=\"758.795\" y=\"-579.338\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge37\" class=\"edge\">\n", + "<title>19->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M815.97,-437.31C783.64,-491.41 702.18,-650.97 673.62,-715.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"670.24,-714.75 669.5,-725.32 676.67,-717.52 670.24,-714.75\"/>\n", + "<text text-anchor=\"middle\" x=\"730.29\" y=\"-580.34\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->3 -->\n", - "<g id=\"edge76\" class=\"edge\"><title>19->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M819.152,-437.154C802.091,-478.048 769.487,-577.794 756.957,-626.77\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"753.507,-626.143 754.537,-636.688 760.307,-627.803 753.507,-626.143\"/>\n", - "<text text-anchor=\"middle\" x=\"802.054\" y=\"-531.762\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge38\" class=\"edge\">\n", + "<title>19->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M819.15,-437.15C802.09,-478.05 769.49,-577.79 756.96,-626.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"753.51,-626.14 754.54,-636.69 760.31,-627.8 753.51,-626.14\"/>\n", + "<text text-anchor=\"middle\" x=\"773.55\" y=\"-520.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->2 -->\n", - "<g id=\"edge78\" class=\"edge\"><title>19->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M821.212,-437.11C815.909,-457.46 810.388,-490.808 808.214,-514.648\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"804.707,-514.621 807.464,-524.851 811.688,-515.135 804.707,-514.621\"/>\n", - "<text text-anchor=\"middle\" x=\"800.713\" y=\"-469.679\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge39\" class=\"edge\">\n", + "<title>19->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M821.21,-437.11C815.91,-457.46 810.39,-490.81 808.21,-514.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"804.71,-514.62 807.46,-524.85 811.69,-515.13 804.71,-514.62\"/>\n", + "<text text-anchor=\"middle\" x=\"800.21\" y=\"-479.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 19->1 -->\n", - "<g id=\"edge80\" class=\"edge\"><title>19->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M827.154,-400.972C817.738,-359.916 785.464,-259.604 766.333,-210.83\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"769.564,-209.485 762.578,-201.52 763.072,-212.103 769.564,-209.485\"/>\n", - "<text text-anchor=\"middle\" x=\"782.743\" y=\"-305.701\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge40\" class=\"edge\">\n", + "<title>19->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M827.15,-400.97C817.74,-359.92 785.46,-259.6 766.33,-210.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"769.56,-209.48 762.58,-201.52 763.07,-212.1 769.56,-209.48\"/>\n", + "<text text-anchor=\"middle\" x=\"782.24\" y=\"-309.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->20 -->\n", - "<g id=\"edge82\" class=\"edge\"><title>18->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M672.354,-112.948C694.139,-148.799 751.211,-227.938 784.561,-269.145\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"782.042,-271.593 791.096,-277.095 787.45,-267.147 782.042,-271.593\"/>\n", - "<text text-anchor=\"middle\" x=\"715.457\" y=\"-195.847\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge41\" class=\"edge\">\n", + "<title>18->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M672.35,-112.95C694.14,-148.8 751.21,-227.94 784.56,-269.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"782.04,-271.59 791.1,-277.09 787.45,-267.15 782.04,-271.59\"/>\n", + "<text text-anchor=\"middle\" x=\"713.96\" y=\"-179.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->19 -->\n", - "<g id=\"edge84\" class=\"edge\"><title>18->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M669.596,-113.05C692.453,-167.625 773.959,-328.186 810.948,-392.259\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.99,-394.134 816.07,-400.988 814.027,-390.592 807.99,-394.134\"/>\n", - "<text text-anchor=\"middle\" x=\"754.272\" y=\"-241.454\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge42\" class=\"edge\">\n", + "<title>18->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M669.6,-113.05C692.45,-167.62 773.96,-328.19 810.95,-392.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.99,-394.13 816.07,-400.99 814.03,-390.59 807.99,-394.13\"/>\n", + "<text text-anchor=\"middle\" x=\"725.77\" y=\"-241.45\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->18 -->\n", - "<g id=\"edge86\" class=\"edge\"><title>18->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M691.055,-101.341C700.838,-101.486 708.814,-99.2383 708.814,-94.5976 708.814,-91.7698 705.852,-89.8304 701.324,-88.7796\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"701.328,-85.2659 691.055,-87.8542 700.7,-92.2377 701.328,-85.2659\"/>\n", - "<text text-anchor=\"middle\" x=\"720.867\" y=\"-90.3976\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge43\" class=\"edge\">\n", + "<title>18->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M691.05,-101.34C700.84,-101.49 708.81,-99.24 708.81,-94.6 708.81,-91.77 705.85,-89.83 701.32,-88.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"701.33,-85.27 691.05,-87.85 700.7,-92.24 701.33,-85.27\"/>\n", + "<text text-anchor=\"middle\" x=\"723.31\" y=\"-90.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->17 -->\n", - "<g id=\"edge88\" class=\"edge\"><title>18->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M641.059,-76.5378C625.916,-67.5533 605.724,-57.0839 588.385,-49.1557\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.656,-45.8909 579.096,-45.0382 586.82,-52.2904 589.656,-45.8909\"/>\n", - "<text text-anchor=\"middle\" x=\"608.722\" y=\"-70.6468\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge44\" class=\"edge\">\n", + "<title>18->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M641.06,-76.54C625.92,-67.55 605.72,-57.08 588.39,-49.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.66,-45.89 579.1,-45.04 586.82,-52.29 589.66,-45.89\"/>\n", + "<text text-anchor=\"middle\" x=\"600.22\" y=\"-51.65\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->16 -->\n", - "<g id=\"edge90\" class=\"edge\"><title>18->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.794,-80.9981C594.517,-64.3738 512.683,-37.6433 465,-24.755\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.646,-21.3059 455.085,-22.151 463.868,-28.0764 465.646,-21.3059\"/>\n", - "<text text-anchor=\"middle\" x=\"546.897\" y=\"-60.6765\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge45\" class=\"edge\">\n", + "<title>18->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.79,-81C594.52,-64.37 512.68,-37.64 465,-24.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.65,-21.31 455.08,-22.15 463.87,-28.08 465.65,-21.31\"/>\n", + "<text text-anchor=\"middle\" x=\"536.4\" y=\"-56.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->15 -->\n", - "<g id=\"edge92\" class=\"edge\"><title>18->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.783,-86.4606C573.244,-72.5952 414.299,-47.2587 341.547,-39.2135\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.771,-35.7178 331.46,-38.1554 341.04,-42.6796 341.771,-35.7178\"/>\n", - "<text text-anchor=\"middle\" x=\"490.165\" y=\"-47.6371\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge46\" class=\"edge\">\n", + "<title>18->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.78,-86.46C573.24,-72.6 414.3,-47.26 341.55,-39.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.77,-35.72 331.46,-38.16 341.04,-42.68 341.77,-35.72\"/>\n", + "<text text-anchor=\"middle\" x=\"474.66\" y=\"-51.64\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->14 -->\n", - "<g id=\"edge94\" class=\"edge\"><title>18->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.771,-91.2406C556.871,-86.8922 321.729,-86.7235 229.784,-90.7345\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.373,-87.2502 219.554,-91.2306 229.712,-94.242 229.373,-87.2502\"/>\n", - "<text text-anchor=\"middle\" x=\"433.277\" y=\"-77.7875\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge47\" class=\"edge\">\n", + "<title>18->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.77,-91.24C556.87,-86.89 321.73,-86.72 229.78,-90.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.37,-87.25 219.55,-91.23 229.71,-94.24 229.37,-87.25\"/>\n", + "<text text-anchor=\"middle\" x=\"418.78\" y=\"-79.79\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->13 -->\n", - "<g id=\"edge96\" class=\"edge\"><title>18->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.687,-95.7653C544.936,-105.535 246.111,-152.692 140.766,-173.795\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.996,-170.38 130.901,-175.814 141.4,-177.238 139.996,-170.38\"/>\n", - "<text text-anchor=\"middle\" x=\"387.727\" y=\"-119.58\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge48\" class=\"edge\">\n", + "<title>18->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.69,-95.77C544.94,-105.54 246.11,-152.69 140.77,-173.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140,-170.38 130.9,-175.81 141.4,-177.24 140,-170.38\"/>\n", + "<text text-anchor=\"middle\" x=\"374.23\" y=\"-123.58\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->12 -->\n", - "<g id=\"edge98\" class=\"edge\"><title>18->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.782,-100.297C538.051,-127.218 196.892,-237.881 83.5516,-279.496\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.0809,-276.308 73.9249,-283.071 84.5178,-282.87 82.0809,-276.308\"/>\n", - "<text text-anchor=\"middle\" x=\"357.167\" y=\"-173.696\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge49\" class=\"edge\">\n", + "<title>18->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.78,-100.3C538.05,-127.22 196.89,-237.88 83.55,-279.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.08,-276.31 73.92,-283.07 84.52,-282.87 82.08,-276.31\"/>\n", + "<text text-anchor=\"middle\" x=\"345.67\" y=\"-178.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->11 -->\n", - "<g id=\"edge100\" class=\"edge\"><title>18->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.757,-105.159C535.374,-151.218 178.15,-333.037 63.0253,-396.9\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"61.2365,-393.89 54.2147,-401.824 64.6515,-400.001 61.2365,-393.89\"/>\n", - "<text text-anchor=\"middle\" x=\"343.891\" y=\"-234.83\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge50\" class=\"edge\">\n", + "<title>18->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.76,-105.16C535.37,-151.22 178.15,-333.04 63.03,-396.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"61.24,-393.89 54.21,-401.82 64.65,-400 61.24,-393.89\"/>\n", + "<text text-anchor=\"middle\" x=\"335.39\" y=\"-239.83\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->10 -->\n", - "<g id=\"edge102\" class=\"edge\"><title>18->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.768,-110.671C535.393,-178.069 178.824,-437.033 75.0989,-518.449\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"72.6329,-515.937 66.9618,-524.886 76.9759,-521.427 72.6329,-515.937\"/>\n", - "<text text-anchor=\"middle\" x=\"363.933\" y=\"-322.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge51\" class=\"edge\">\n", + "<title>18->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.77,-110.67C535.39,-178.07 178.82,-437.03 75.1,-518.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"72.63,-515.94 66.96,-524.89 76.98,-521.43 72.63,-515.94\"/>\n", + "<text text-anchor=\"middle\" x=\"341.43\" y=\"-303.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->9 -->\n", - "<g id=\"edge104\" class=\"edge\"><title>18->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M641.958,-112.618C552.319,-194.744 214.081,-532.883 125.101,-629.174\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"122.371,-626.972 118.198,-636.71 127.533,-631.7 122.371,-626.972\"/>\n", - "<text text-anchor=\"middle\" x=\"394.529\" y=\"-377.696\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge52\" class=\"edge\">\n", + "<title>18->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M641.96,-112.62C552.32,-194.74 214.08,-532.88 125.1,-629.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"122.37,-626.97 118.2,-636.71 127.53,-631.7 122.37,-626.97\"/>\n", + "<text text-anchor=\"middle\" x=\"369.03\" y=\"-374.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->8 -->\n", - "<g id=\"edge106\" class=\"edge\"><title>18->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M647.402,-112.889C574.323,-204.056 280.22,-608.693 208.214,-716.894\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"205.254,-715.026 202.678,-725.303 211.1,-718.875 205.254,-715.026\"/>\n", - "<text text-anchor=\"middle\" x=\"440.808\" y=\"-419.691\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge53\" class=\"edge\">\n", + "<title>18->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M647.4,-112.89C574.32,-204.06 280.22,-608.69 208.21,-716.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"205.25,-715.03 202.68,-725.3 211.1,-718.88 205.25,-715.03\"/>\n", + "<text text-anchor=\"middle\" x=\"413.31\" y=\"-403.69\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->7 -->\n", - "<g id=\"edge108\" class=\"edge\"><title>18->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M651.868,-112.755C596.538,-208.838 367.772,-657.555 314.928,-773.256\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"311.677,-771.951 310.765,-782.507 318.06,-774.824 311.677,-771.951\"/>\n", - "<text text-anchor=\"middle\" x=\"497.398\" y=\"-445.806\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge54\" class=\"edge\">\n", + "<title>18->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M651.87,-112.76C596.54,-208.84 367.77,-657.56 314.93,-773.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"311.68,-771.95 310.76,-782.51 318.06,-774.82 311.68,-771.95\"/>\n", + "<text text-anchor=\"middle\" x=\"468.9\" y=\"-431.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->6 -->\n", - "<g id=\"edge110\" class=\"edge\"><title>18->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M655.387,-112.903C617.55,-210.864 467.251,-672.984 434.265,-792.091\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"430.839,-791.351 431.605,-801.918 437.596,-793.18 430.839,-791.351\"/>\n", - "<text text-anchor=\"middle\" x=\"530.826\" y=\"-444.297\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge55\" class=\"edge\">\n", + "<title>18->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M655.39,-112.9C617.55,-210.86 467.25,-672.98 434.27,-792.09\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"430.84,-791.35 431.61,-801.92 437.6,-793.18 430.84,-791.35\"/>\n", + "<text text-anchor=\"middle\" x=\"530.33\" y=\"-456.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->5 -->\n", - "<g id=\"edge112\" class=\"edge\"><title>18->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M658.552,-112.747C637.608,-208.577 566.638,-655.664 553.579,-772.512\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"550.097,-772.157 552.529,-782.469 557.059,-772.892 550.097,-772.157\"/>\n", - "<text text-anchor=\"middle\" x=\"620.065\" y=\"-440.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge56\" class=\"edge\">\n", + "<title>18->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M658.55,-112.75C637.61,-208.58 566.64,-655.66 553.58,-772.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"550.1,-772.16 552.53,-782.47 557.06,-772.89 550.1,-772.16\"/>\n", + "<text text-anchor=\"middle\" x=\"591.57\" y=\"-446.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->4 -->\n", - "<g id=\"edge114\" class=\"edge\"><title>18->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M661.392,-112.631C655.811,-202.771 655.627,-604.523 660.84,-715.221\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"657.349,-715.49 661.379,-725.289 664.339,-715.116 657.349,-715.49\"/>\n", - "<text text-anchor=\"middle\" x=\"648.116\" y=\"-409.726\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge57\" class=\"edge\">\n", + "<title>18->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M661.39,-112.63C655.81,-202.77 655.63,-604.52 660.84,-715.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"657.35,-715.49 661.38,-725.29 664.34,-715.12 657.35,-715.49\"/>\n", + "<text text-anchor=\"middle\" x=\"646.62\" y=\"-417.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->3 -->\n", - "<g id=\"edge116\" class=\"edge\"><title>18->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M664.079,-112.691C671.559,-194.192 724.143,-527.506 744.879,-626.786\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"741.484,-627.646 747.015,-636.682 748.326,-626.169 741.484,-627.646\"/>\n", - "<text text-anchor=\"middle\" x=\"718.479\" y=\"-363.538\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge58\" class=\"edge\">\n", + "<title>18->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M664.08,-112.69C671.56,-194.19 724.14,-527.51 744.88,-626.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"741.48,-627.65 747.02,-636.68 748.33,-626.17 741.48,-627.65\"/>\n", + "<text text-anchor=\"middle\" x=\"689.98\" y=\"-373.54\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->2 -->\n", - "<g id=\"edge118\" class=\"edge\"><title>18->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M666.76,-112.771C684.112,-182.37 765.008,-432.093 796.915,-515.601\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"793.662,-516.892 800.556,-524.938 800.184,-514.349 793.662,-516.892\"/>\n", - "<text text-anchor=\"middle\" x=\"717.838\" y=\"-313.986\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge59\" class=\"edge\">\n", + "<title>18->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M666.76,-112.77C684.11,-182.37 765.01,-432.09 796.91,-515.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"793.66,-516.89 800.56,-524.94 800.18,-514.35 793.66,-516.89\"/>\n", + "<text text-anchor=\"middle\" x=\"717.34\" y=\"-317.99\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 18->1 -->\n", - "<g id=\"edge120\" class=\"edge\"><title>18->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M674.812,-112.903C685.812,-126.099 703.075,-143.943 718.576,-158.408\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.266,-161.039 726.008,-165.203 720.989,-155.873 716.266,-161.039\"/>\n", - "<text text-anchor=\"middle\" x=\"707.694\" y=\"-120.456\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge60\" class=\"edge\">\n", + "<title>18->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M674.81,-112.9C685.81,-126.1 703.08,-143.94 718.58,-158.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.27,-161.04 726.01,-165.2 720.99,-155.87 716.27,-161.04\"/>\n", + "<text text-anchor=\"middle\" x=\"682.19\" y=\"-139.46\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->20 -->\n", - "<g id=\"edge122\" class=\"edge\"><title>17->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M565.289,-55.7896C604.767,-100.994 721.426,-218.11 778.066,-269.937\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.884,-272.683 785.645,-276.802 780.584,-267.495 775.884,-272.683\"/>\n", - "<text text-anchor=\"middle\" x=\"660.677\" y=\"-169.663\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge61\" class=\"edge\">\n", + "<title>17->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M565.29,-55.79C604.77,-100.99 721.43,-218.11 778.07,-269.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.88,-272.68 785.65,-276.8 780.58,-267.49 775.88,-272.68\"/>\n", + "<text text-anchor=\"middle\" x=\"657.18\" y=\"-151.66\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->19 -->\n", - "<g id=\"edge124\" class=\"edge\"><title>17->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M561.527,-55.7556C600.571,-117.623 747.391,-320.161 805.448,-392.856\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"803.068,-395.48 812.075,-401.059 808.513,-391.081 803.068,-395.48\"/>\n", - "<text text-anchor=\"middle\" x=\"696.487\" y=\"-211.106\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge62\" class=\"edge\">\n", + "<title>17->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M561.53,-55.76C600.57,-117.62 747.39,-320.16 805.45,-392.86\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"803.07,-395.48 812.07,-401.06 808.51,-391.08 803.07,-395.48\"/>\n", + "<text text-anchor=\"middle\" x=\"668.99\" y=\"-213.11\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->18 -->\n", - "<g id=\"edge126\" class=\"edge\"><title>17->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M574.763,-55.6896C589.906,-64.6741 610.098,-75.1435 627.437,-83.0717\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.165,-86.3365 636.726,-87.1892 629.002,-79.9371 626.165,-86.3365\"/>\n", - "<text text-anchor=\"middle\" x=\"607.1\" y=\"-53.1806\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge63\" class=\"edge\">\n", + "<title>17->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M574.76,-55.69C589.91,-64.67 610.1,-75.14 627.44,-83.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.17,-86.34 636.73,-87.19 629,-79.94 626.17,-86.34\"/>\n", + "<text text-anchor=\"middle\" x=\"586.6\" y=\"-73.18\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->17 -->\n", - "<g id=\"edge128\" class=\"edge\"><title>17->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.249,-44.3732C589.032,-44.5182 597.008,-42.2704 597.008,-37.6298 597.008,-34.8019 594.046,-32.8626 589.519,-31.8118\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.523,-28.2981 579.249,-30.8864 588.894,-35.2698 589.523,-28.2981\"/>\n", - "<text text-anchor=\"middle\" x=\"609.061\" y=\"-33.4298\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge64\" class=\"edge\">\n", + "<title>17->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.25,-44.37C589.03,-44.52 597.01,-42.27 597.01,-37.63 597.01,-34.8 594.05,-32.86 589.52,-31.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.52,-28.3 579.25,-30.89 588.89,-35.27 589.52,-28.3\"/>\n", + "<text text-anchor=\"middle\" x=\"611.51\" y=\"-33.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->16 -->\n", - "<g id=\"edge130\" class=\"edge\"><title>17->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.786,-27.4856C507.369,-23.5665 484.545,-19.7996 465.442,-17.6307\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.572,-14.126 455.27,-16.5993 464.866,-21.0903 465.572,-14.126\"/>\n", - "<text text-anchor=\"middle\" x=\"494.114\" y=\"-29.3581\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge65\" class=\"edge\">\n", + "<title>17->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.79,-27.49C507.37,-23.57 484.54,-19.8 465.44,-17.63\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.57,-14.13 455.27,-16.6 464.87,-21.09 465.57,-14.13\"/>\n", + "<text text-anchor=\"middle\" x=\"509.61\" y=\"-26.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->15 -->\n", - "<g id=\"edge132\" class=\"edge\"><title>17->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.534,-33.1972C479.934,-30.3074 391.717,-30.1203 341.469,-32.6359\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.136,-29.1491 331.352,-33.2138 341.536,-36.1377 341.136,-29.1491\"/>\n", - "<text text-anchor=\"middle\" x=\"433.001\" y=\"-19.7166\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge66\" class=\"edge\">\n", + "<title>17->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.53,-33.2C479.93,-30.31 391.72,-30.12 341.47,-32.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.14,-29.15 331.35,-33.21 341.54,-36.14 341.14,-29.15\"/>\n", + "<text text-anchor=\"middle\" x=\"447.5\" y=\"-36.72\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->14 -->\n", - "<g id=\"edge134\" class=\"edge\"><title>17->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.975,-38.1265C461.447,-44.3424 302.554,-69.3007 229.784,-84.2568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"228.755,-80.8969 219.693,-86.3875 230.201,-87.7458 228.755,-80.8969\"/>\n", - "<text text-anchor=\"middle\" x=\"378.379\" y=\"-67.9917\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge67\" class=\"edge\">\n", + "<title>17->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.98,-38.13C461.45,-44.34 302.55,-69.3 229.78,-84.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"228.75,-80.9 219.69,-86.39 230.2,-87.75 228.75,-80.9\"/>\n", + "<text text-anchor=\"middle\" x=\"362.88\" y=\"-49.99\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->13 -->\n", - "<g id=\"edge136\" class=\"edge\"><title>17->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.918,-42.8823C447.909,-63.3881 227.728,-134.724 140.153,-167.286\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"138.758,-164.071 130.635,-170.872 141.227,-170.621 138.758,-164.071\"/>\n", - "<text text-anchor=\"middle\" x=\"335.536\" y=\"-112.884\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge68\" class=\"edge\">\n", + "<title>17->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.92,-42.88C447.91,-63.39 227.73,-134.72 140.15,-167.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"138.76,-164.07 130.63,-170.87 141.23,-170.62 138.76,-164.07\"/>\n", + "<text text-anchor=\"middle\" x=\"318.04\" y=\"-93.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->12 -->\n", - "<g id=\"edge138\" class=\"edge\"><title>17->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.805,-47.914C439.729,-86.1556 178.846,-218.866 82.6871,-272.536\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.9051,-269.523 73.907,-277.478 84.3383,-275.623 80.9051,-269.523\"/>\n", - "<text text-anchor=\"middle\" x=\"309.746\" y=\"-168.025\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge69\" class=\"edge\">\n", + "<title>17->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.8,-47.91C439.73,-86.16 178.85,-218.87 82.69,-272.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.91,-269.52 73.91,-277.48 84.34,-275.62 80.91,-269.52\"/>\n", + "<text text-anchor=\"middle\" x=\"289.25\" y=\"-149.03\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->11 -->\n", - "<g id=\"edge140\" class=\"edge\"><title>17->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.858,-53.5117C434.757,-113.077 146.509,-322.4 55.0717,-394.53\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"52.7422,-391.911 47.0955,-400.875 57.1002,-397.389 52.7422,-391.911\"/>\n", - "<text text-anchor=\"middle\" x=\"297.965\" y=\"-231.821\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge70\" class=\"edge\">\n", + "<title>17->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.86,-53.51C434.76,-113.08 146.51,-322.4 55.07,-394.53\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"52.74,-391.91 47.1,-400.88 57.1,-397.39 52.74,-391.91\"/>\n", + "<text text-anchor=\"middle\" x=\"275.46\" y=\"-212.82\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->10 -->\n", - "<g id=\"edge142\" class=\"edge\"><title>17->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M529.867,-55.7353C446.139,-132.212 150.096,-428.161 67.8853,-517.433\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"65.1913,-515.193 61.0377,-524.939 70.3629,-519.91 65.1913,-515.193\"/>\n", - "<text text-anchor=\"middle\" x=\"287.876\" y=\"-271.384\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge71\" class=\"edge\">\n", + "<title>17->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M529.87,-55.74C446.14,-132.21 150.1,-428.16 67.89,-517.43\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"65.19,-515.19 61.04,-524.94 70.36,-519.91 65.19,-515.19\"/>\n", + "<text text-anchor=\"middle\" x=\"284.38\" y=\"-290.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->9 -->\n", - "<g id=\"edge144\" class=\"edge\"><title>17->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M535.502,-55.9439C464.742,-144.06 188.71,-523.826 119.377,-628.21\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"116.417,-626.341 113.852,-636.621 122.268,-630.184 116.417,-626.341\"/>\n", - "<text text-anchor=\"middle\" x=\"314.44\" y=\"-328.877\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge72\" class=\"edge\">\n", + "<title>17->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M535.5,-55.94C464.74,-144.06 188.71,-523.83 119.38,-628.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"116.42,-626.34 113.85,-636.62 122.27,-630.18 116.42,-626.34\"/>\n", + "<text text-anchor=\"middle\" x=\"312.94\" y=\"-345.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->8 -->\n", - "<g id=\"edge146\" class=\"edge\"><title>17->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M540.062,-55.7876C484.732,-151.87 255.967,-600.587 203.122,-716.288\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.871,-714.984 198.959,-725.539 206.255,-717.857 199.871,-714.984\"/>\n", - "<text text-anchor=\"middle\" x=\"385.592\" y=\"-388.838\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge73\" class=\"edge\">\n", + "<title>17->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M540.06,-55.79C484.73,-151.87 255.97,-600.59 203.12,-716.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.87,-714.98 198.96,-725.54 206.25,-717.86 199.87,-714.98\"/>\n", + "<text text-anchor=\"middle\" x=\"357.09\" y=\"-389.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->7 -->\n", - "<g id=\"edge148\" class=\"edge\"><title>17->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M543.699,-55.7788C504.79,-156.767 344.653,-649.163 310.388,-772.476\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.964,-771.731 307.719,-782.298 313.719,-773.566 306.964,-771.731\"/>\n", - "<text text-anchor=\"middle\" x=\"441.044\" y=\"-413.927\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge74\" class=\"edge\">\n", + "<title>17->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M543.7,-55.78C504.79,-156.77 344.65,-649.16 310.39,-772.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.96,-771.73 307.72,-782.3 313.72,-773.57 306.96,-771.73\"/>\n", + "<text text-anchor=\"middle\" x=\"441.54\" y=\"-417.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->6 -->\n", - "<g id=\"edge150\" class=\"edge\"><title>17->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M546.843,-55.8489C524.633,-158.721 444.025,-666.699 429.775,-792.113\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"426.292,-791.767 428.701,-802.084 433.252,-792.516 426.292,-791.767\"/>\n", - "<text text-anchor=\"middle\" x=\"502.309\" y=\"-421.781\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge75\" class=\"edge\">\n", + "<title>17->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M546.84,-55.85C524.63,-158.72 444.02,-666.7 429.77,-792.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"426.29,-791.77 428.7,-802.08 433.25,-792.52 426.29,-791.77\"/>\n", + "<text text-anchor=\"middle\" x=\"502.81\" y=\"-427.78\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->5 -->\n", - "<g id=\"edge152\" class=\"edge\"><title>17->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M549.757,-55.7352C543.937,-156.488 543.764,-647.971 549.236,-772.029\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"545.752,-772.424 549.747,-782.236 552.743,-772.074 545.752,-772.424\"/>\n", - "<text text-anchor=\"middle\" x=\"562.497\" y=\"-409.682\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge76\" class=\"edge\">\n", + "<title>17->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M549.76,-55.74C543.94,-156.49 543.76,-647.97 549.24,-772.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"545.75,-772.42 549.75,-782.24 552.74,-772.07 545.75,-772.42\"/>\n", + "<text text-anchor=\"middle\" x=\"535\" y=\"-417.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->4 -->\n", - "<g id=\"edge154\" class=\"edge\"><title>17->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M552.541,-55.7947C561.931,-151.659 632.553,-598.728 656.476,-715.555\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"653.088,-716.448 658.577,-725.51 659.937,-715.003 653.088,-716.448\"/>\n", - "<text text-anchor=\"middle\" x=\"618.509\" y=\"-379.475\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge77\" class=\"edge\">\n", + "<title>17->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M552.54,-55.79C561.93,-151.66 632.55,-598.73 656.48,-715.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"653.09,-716.45 658.58,-725.51 659.94,-715 653.09,-716.45\"/>\n", + "<text text-anchor=\"middle\" x=\"590.01\" y=\"-389.47\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->3 -->\n", - "<g id=\"edge156\" class=\"edge\"><title>17->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M555.364,-55.8615C578.016,-143.477 700.534,-521.21 740.332,-627.121\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"737.183,-628.687 744.025,-636.776 743.721,-626.186 737.183,-628.687\"/>\n", - "<text text-anchor=\"middle\" x=\"633.848\" y=\"-341.291\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge78\" class=\"edge\">\n", + "<title>17->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M555.36,-55.86C578.02,-143.48 700.53,-521.21 740.33,-627.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"737.18,-628.69 744.03,-636.78 743.72,-626.19 737.18,-628.69\"/>\n", + "<text text-anchor=\"middle\" x=\"633.35\" y=\"-345.29\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->2 -->\n", - "<g id=\"edge158\" class=\"edge\"><title>17->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M558.232,-55.6387C590.981,-131.465 740.131,-424.71 791.922,-515.848\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"789.023,-517.826 797.046,-524.746 795.089,-514.334 789.023,-517.826\"/>\n", - "<text text-anchor=\"middle\" x=\"689.077\" y=\"-274.543\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge79\" class=\"edge\">\n", + "<title>17->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M558.23,-55.64C590.98,-131.47 740.13,-424.71 791.92,-515.85\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"789.02,-517.83 797.05,-524.75 795.09,-514.33 789.02,-517.83\"/>\n", + "<text text-anchor=\"middle\" x=\"660.58\" y=\"-289.54\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 17->1 -->\n", - "<g id=\"edge160\" class=\"edge\"><title>17->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M569.827,-55.8608C602.822,-83.5181 673.744,-135.401 716.912,-163.79\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.123,-166.801 725.417,-169.307 718.933,-160.929 715.123,-166.801\"/>\n", - "<text text-anchor=\"middle\" x=\"651.369\" y=\"-93.6253\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge80\" class=\"edge\">\n", + "<title>17->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M569.83,-55.86C602.82,-83.52 673.74,-135.4 716.91,-163.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.12,-166.8 725.42,-169.31 718.93,-160.93 715.12,-166.8\"/>\n", + "<text text-anchor=\"middle\" x=\"628.87\" y=\"-113.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->20 -->\n", - "<g id=\"edge162\" class=\"edge\"><title>16->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M447.445,-36.1793C508.126,-85.6124 694.764,-221.504 773.71,-274.098\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.07,-277.21 782.344,-279.798 775.927,-271.368 772.07,-277.21\"/>\n", - "<text text-anchor=\"middle\" x=\"602.577\" y=\"-162.939\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge81\" class=\"edge\">\n", + "<title>16->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M447.44,-36.18C508.13,-85.61 694.76,-221.5 773.71,-274.1\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.07,-277.21 782.34,-279.8 775.93,-271.37 772.07,-277.21\"/>\n", + "<text text-anchor=\"middle\" x=\"596.08\" y=\"-143.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->19 -->\n", - "<g id=\"edge164\" class=\"edge\"><title>16->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M442.258,-36.2511C500.075,-100.991 717.763,-319.045 798.68,-393.77\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"796.782,-396.778 806.521,-400.95 801.509,-391.616 796.782,-396.778\"/>\n", - "<text text-anchor=\"middle\" x=\"609.469\" y=\"-221.811\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge82\" class=\"edge\">\n", + "<title>16->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M442.26,-36.25C500.07,-100.99 717.76,-319.05 798.68,-393.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"796.78,-396.78 806.52,-400.95 801.51,-391.62 796.78,-396.78\"/>\n", + "<text text-anchor=\"middle\" x=\"605.97\" y=\"-203.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->18 -->\n", - "<g id=\"edge166\" class=\"edge\"><title>16->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.09,-31.5996C497.368,-48.2238 579.201,-74.9544 626.884,-87.8426\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.238,-91.2917 636.8,-90.4466 628.017,-84.5213 626.238,-91.2917\"/>\n", - "<text text-anchor=\"middle\" x=\"536.987\" y=\"-67.5211\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge83\" class=\"edge\">\n", + "<title>16->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.09,-31.6C497.37,-48.22 579.2,-74.95 626.88,-87.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.24,-91.29 636.8,-90.45 628.02,-84.52 626.24,-91.29\"/>\n", + "<text text-anchor=\"middle\" x=\"555.49\" y=\"-63.52\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->17 -->\n", - "<g id=\"edge168\" class=\"edge\"><title>16->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.293,-28.1442C472.709,-32.0633 495.534,-35.8302 514.637,-37.9991\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.507,-41.5038 524.809,-39.0305 515.213,-34.5395 514.507,-41.5038\"/>\n", - "<text text-anchor=\"middle\" x=\"485.965\" y=\"-17.8717\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge84\" class=\"edge\">\n", + "<title>16->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.29,-28.14C472.71,-32.06 495.53,-35.83 514.64,-38\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.51,-41.5 524.81,-39.03 515.21,-34.54 514.51,-41.5\"/>\n", + "<text text-anchor=\"middle\" x=\"499.46\" y=\"-36.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->16 -->\n", - "<g id=\"edge170\" class=\"edge\"><title>16->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.311,-24.7434C465.094,-24.8884 473.07,-22.6406 473.07,-18 473.07,-15.1721 470.109,-13.2328 465.581,-12.182\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.585,-8.66827 455.311,-11.2566 464.957,-15.64 465.585,-8.66827\"/>\n", - "<text text-anchor=\"middle\" x=\"485.124\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge85\" class=\"edge\">\n", + "<title>16->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.31,-24.74C465.09,-24.89 473.07,-22.64 473.07,-18 473.07,-15.17 470.11,-13.23 465.58,-12.18\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.59,-8.67 455.31,-11.26 464.96,-15.64 465.59,-8.67\"/>\n", + "<text text-anchor=\"middle\" x=\"487.57\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->15 -->\n", - "<g id=\"edge172\" class=\"edge\"><title>16->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.905,-16.5964C383.366,-18.1331 360.327,-21.5653 341.128,-25.4135\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"340.257,-22.0202 331.202,-27.5201 341.711,-28.8677 340.257,-22.0202\"/>\n", - "<text text-anchor=\"middle\" x=\"370.016\" y=\"-6.80495\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge86\" class=\"edge\">\n", + "<title>16->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.9,-16.6C383.37,-18.13 360.33,-21.57 341.13,-25.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"340.26,-22.02 331.2,-27.52 341.71,-28.87 340.26,-22.02\"/>\n", + "<text text-anchor=\"middle\" x=\"356.52\" y=\"-9.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->14 -->\n", - "<g id=\"edge174\" class=\"edge\"><title>16->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.033,-22.157C358.704,-32.9008 276.755,-59.2693 229.101,-77.2458\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"227.557,-74.0897 219.48,-80.9458 230.07,-80.6232 227.557,-74.0897\"/>\n", - "<text text-anchor=\"middle\" x=\"318.067\" y=\"-57.5014\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge87\" class=\"edge\">\n", + "<title>16->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.03,-22.16C358.7,-32.9 276.75,-59.27 229.1,-77.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"227.56,-74.09 219.48,-80.95 230.07,-80.62 227.56,-74.09\"/>\n", + "<text text-anchor=\"middle\" x=\"329.57\" y=\"-53.5\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->13 -->\n", - "<g id=\"edge176\" class=\"edge\"><title>16->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.865,-27.5488C342.28,-53.3134 204.353,-123.343 139.04,-160.21\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.273,-157.189 130.322,-165.184 140.742,-163.269 137.273,-157.189\"/>\n", - "<text text-anchor=\"middle\" x=\"275.952\" y=\"-101.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge88\" class=\"edge\">\n", + "<title>16->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.86,-27.55C342.28,-53.31 204.35,-123.34 139.04,-160.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.27,-157.19 130.32,-165.18 140.74,-163.27 137.27,-157.19\"/>\n", + "<text text-anchor=\"middle\" x=\"284.45\" y=\"-97.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->12 -->\n", - "<g id=\"edge178\" class=\"edge\"><title>16->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.951,-33.3037C330.814,-79.1137 144.29,-214.523 73.9419,-270.564\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.5496,-267.997 65.9544,-276.994 75.939,-273.45 71.5496,-267.997\"/>\n", - "<text text-anchor=\"middle\" x=\"245.446\" y=\"-159.734\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge89\" class=\"edge\">\n", + "<title>16->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.95,-33.3C330.81,-79.11 144.29,-214.52 73.94,-270.56\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.55,-268 65.95,-276.99 75.94,-273.45 71.55,-268\"/>\n", + "<text text-anchor=\"middle\" x=\"222.95\" y=\"-140.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->11 -->\n", - "<g id=\"edge180\" class=\"edge\"><title>16->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M405.377,-36.1872C334.299,-100.645 117.176,-317.67 48.197,-393.073\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"45.3761,-390.974 41.2611,-400.737 50.5663,-395.671 45.3761,-390.974\"/>\n", - "<text text-anchor=\"middle\" x=\"237.787\" y=\"-221.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge90\" class=\"edge\">\n", + "<title>16->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M405.38,-36.19C334.3,-100.65 117.18,-317.67 48.2,-393.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"45.38,-390.97 41.26,-400.74 50.57,-395.67 45.38,-390.97\"/>\n", + "<text text-anchor=\"middle\" x=\"212.29\" y=\"-218.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->10 -->\n", - "<g id=\"edge182\" class=\"edge\"><title>16->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M411.324,-36.298C347.873,-114.827 123.86,-422.986 62.2885,-516.196\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"59.2234,-514.488 56.6899,-524.776 65.0858,-518.314 59.2234,-514.488\"/>\n", - "<text text-anchor=\"middle\" x=\"249.806\" y=\"-281.047\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge91\" class=\"edge\">\n", + "<title>16->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M411.32,-36.3C347.87,-114.83 123.86,-422.99 62.29,-516.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"59.22,-514.49 56.69,-524.78 65.09,-518.31 59.22,-514.49\"/>\n", + "<text text-anchor=\"middle\" x=\"222.31\" y=\"-280.05\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->9 -->\n", - "<g id=\"edge184\" class=\"edge\"><title>16->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M415.931,-36.2593C364.06,-125.934 163.457,-519.37 114.348,-627.34\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"111.094,-626.043 110.201,-636.6 117.483,-628.904 111.094,-626.043\"/>\n", - "<text text-anchor=\"middle\" x=\"279.14\" y=\"-334.6\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge92\" class=\"edge\">\n", + "<title>16->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M415.93,-36.26C364.06,-125.93 163.46,-519.37 114.35,-627.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"111.09,-626.04 110.2,-636.6 117.48,-628.9 111.09,-626.04\"/>\n", + "<text text-anchor=\"middle\" x=\"250.64\" y=\"-335.6\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->8 -->\n", - "<g id=\"edge186\" class=\"edge\"><title>16->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M419.643,-36.3049C381.807,-134.267 231.508,-596.387 198.522,-715.493\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"195.096,-714.754 195.862,-725.321 201.853,-716.582 195.096,-714.754\"/>\n", - "<text text-anchor=\"middle\" x=\"323.083\" y=\"-375.699\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge93\" class=\"edge\">\n", + "<title>16->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M419.64,-36.3C381.81,-134.27 231.51,-596.39 198.52,-715.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"195.1,-714.75 195.86,-725.32 201.85,-716.58 195.1,-714.75\"/>\n", + "<text text-anchor=\"middle\" x=\"294.58\" y=\"-379.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->7 -->\n", - "<g id=\"edge188\" class=\"edge\"><title>16->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M422.906,-36.2191C400.695,-139.091 320.087,-647.069 305.837,-772.483\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"302.354,-772.137 304.763,-782.454 309.314,-772.886 302.354,-772.137\"/>\n", - "<text text-anchor=\"middle\" x=\"350.371\" y=\"-398.151\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge94\" class=\"edge\">\n", + "<title>16->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M422.91,-36.22C400.69,-139.09 320.09,-647.07 305.84,-772.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"302.35,-772.14 304.76,-782.45 309.31,-772.89 302.35,-772.14\"/>\n", + "<text text-anchor=\"middle\" x=\"349.87\" y=\"-408.15\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->6 -->\n", - "<g id=\"edge190\" class=\"edge\"><title>16->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M425.863,-36.261C419.977,-140.835 419.811,-663.54 425.364,-791.726\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"421.878,-792.092 425.864,-801.908 428.869,-791.749 421.878,-792.092\"/>\n", - "<text text-anchor=\"middle\" x=\"438.613\" y=\"-409.793\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge95\" class=\"edge\">\n", + "<title>16->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M425.86,-36.26C419.98,-140.84 419.81,-663.54 425.36,-791.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"421.88,-792.09 425.86,-801.91 428.87,-791.75 421.88,-792.09\"/>\n", + "<text text-anchor=\"middle\" x=\"411.11\" y=\"-417.79\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->5 -->\n", - "<g id=\"edge192\" class=\"edge\"><title>16->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M428.711,-36.1595C439.034,-138.872 519.305,-646.827 544.779,-772.402\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"541.394,-773.314 546.864,-782.388 548.247,-771.884 541.394,-773.314\"/>\n", - "<text text-anchor=\"middle\" x=\"500.745\" y=\"-398.081\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge96\" class=\"edge\">\n", + "<title>16->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M428.71,-36.16C439.03,-138.87 519.31,-646.83 544.78,-772.4\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"541.39,-773.31 546.86,-782.39 548.25,-771.88 541.39,-773.31\"/>\n", + "<text text-anchor=\"middle\" x=\"501.25\" y=\"-408.08\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->4 -->\n", - "<g id=\"edge194\" class=\"edge\"><title>16->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M431.62,-36.2776C457.387,-134.266 607.596,-597.176 651.812,-715.802\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"648.587,-717.168 655.403,-725.279 655.133,-714.688 648.587,-717.168\"/>\n", - "<text text-anchor=\"middle\" x=\"527.716\" y=\"-375.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge97\" class=\"edge\">\n", + "<title>16->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M431.62,-36.28C457.39,-134.27 607.6,-597.18 651.81,-715.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"648.59,-717.17 655.4,-725.28 655.13,-714.69 648.59,-717.17\"/>\n", + "<text text-anchor=\"middle\" x=\"527.22\" y=\"-379.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->3 -->\n", - "<g id=\"edge196\" class=\"edge\"><title>16->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M434.629,-36.1134C473.945,-125.638 674.889,-520.469 735.418,-627.814\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"732.511,-629.781 740.507,-636.732 738.591,-626.312 732.511,-629.781\"/>\n", - "<text text-anchor=\"middle\" x=\"571.024\" y=\"-334.764\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge98\" class=\"edge\">\n", + "<title>16->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M434.63,-36.11C473.95,-125.64 674.89,-520.47 735.42,-627.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"732.51,-629.78 740.51,-636.73 738.59,-626.31 732.51,-629.78\"/>\n", + "<text text-anchor=\"middle\" x=\"570.52\" y=\"-335.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->2 -->\n", - "<g id=\"edge198\" class=\"edge\"><title>16->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M438.039,-36.0891C488.369,-114.44 713.117,-424.171 786.417,-516.767\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"783.852,-519.164 792.829,-524.791 789.321,-514.794 783.852,-519.164\"/>\n", - "<text text-anchor=\"middle\" x=\"599.228\" y=\"-281.228\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge99\" class=\"edge\">\n", + "<title>16->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M438.04,-36.09C488.37,-114.44 713.12,-424.17 786.42,-516.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"783.85,-519.16 792.83,-524.79 789.32,-514.79 783.85,-519.16\"/>\n", + "<text text-anchor=\"middle\" x=\"597.73\" y=\"-280.23\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 16->1 -->\n", - "<g id=\"edge200\" class=\"edge\"><title>16->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M454.751,-36.1178C512.704,-69.5878 650.034,-139.685 715.988,-169.598\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.626,-172.822 725.183,-173.71 717.484,-166.432 714.626,-172.822\"/>\n", - "<text text-anchor=\"middle\" x=\"591.37\" y=\"-86.6578\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge100\" class=\"edge\">\n", + "<title>16->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M454.75,-36.12C512.7,-69.59 650.03,-139.69 715.99,-169.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.63,-172.82 725.18,-173.71 717.48,-166.43 714.63,-172.82\"/>\n", + "<text text-anchor=\"middle\" x=\"570.87\" y=\"-106.66\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->20 -->\n", - "<g id=\"edge202\" class=\"edge\"><title>15->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.237,-55.1865C416.124,-103.432 676.74,-236.332 773.167,-280.689\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.956,-283.983 782.508,-284.938 774.855,-277.611 771.956,-283.983\"/>\n", - "<text text-anchor=\"middle\" x=\"546.202\" y=\"-175.738\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge101\" class=\"edge\">\n", + "<title>15->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.24,-55.19C416.12,-103.43 676.74,-236.33 773.17,-280.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.96,-283.98 782.51,-284.94 774.85,-277.61 771.96,-283.98\"/>\n", + "<text text-anchor=\"middle\" x=\"537.7\" y=\"-171.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->19 -->\n", - "<g id=\"edge204\" class=\"edge\"><title>15->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M323.992,-55.6348C402.562,-118.806 691.879,-329.265 793.559,-397.567\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.7,-400.534 801.962,-403.169 795.584,-394.71 791.7,-400.534\"/>\n", - "<text text-anchor=\"middle\" x=\"550.776\" y=\"-234.401\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge102\" class=\"edge\">\n", + "<title>15->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M323.99,-55.63C402.56,-118.81 691.88,-329.27 793.56,-397.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.7,-400.53 801.96,-403.17 795.58,-394.71 791.7,-400.53\"/>\n", + "<text text-anchor=\"middle\" x=\"544.28\" y=\"-215.4\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->18 -->\n", - "<g id=\"edge206\" class=\"edge\"><title>15->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.163,-45.7668C394.703,-59.6322 553.648,-84.9688 626.4,-93.014\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.176,-96.5096 636.487,-94.0721 626.906,-89.5478 626.176,-96.5096\"/>\n", - "<text text-anchor=\"middle\" x=\"479.782\" y=\"-54.1904\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge103\" class=\"edge\">\n", + "<title>15->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.16,-45.77C394.7,-59.63 553.65,-84.97 626.4,-93.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.18,-96.51 636.49,-94.07 626.91,-89.55 626.18,-96.51\"/>\n", + "<text text-anchor=\"middle\" x=\"464.28\" y=\"-73.19\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->17 -->\n", - "<g id=\"edge208\" class=\"edge\"><title>15->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.607,-42.0624C376.207,-44.9522 464.424,-45.1393 514.672,-42.6236\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.005,-46.1104 524.789,-42.0458 514.605,-39.1218 515.005,-46.1104\"/>\n", - "<text text-anchor=\"middle\" x=\"423.139\" y=\"-47.143\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge104\" class=\"edge\">\n", + "<title>15->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.61,-42.06C376.21,-44.95 464.42,-45.14 514.67,-42.62\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515,-46.11 524.79,-42.05 514.61,-39.12 515,-46.11\"/>\n", + "<text text-anchor=\"middle\" x=\"408.64\" y=\"-46.14\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->16 -->\n", - "<g id=\"edge210\" class=\"edge\"><title>15->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.299,-39.0334C348.837,-37.4967 371.876,-34.0645 391.076,-30.2163\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"391.946,-33.6096 401.002,-28.1097 390.493,-26.7621 391.946,-33.6096\"/>\n", - "<text text-anchor=\"middle\" x=\"362.187\" y=\"-40.4248\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge105\" class=\"edge\">\n", + "<title>15->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.3,-39.03C348.84,-37.5 371.88,-34.06 391.08,-30.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"391.95,-33.61 401,-28.11 390.49,-26.76 391.95,-33.61\"/>\n", + "<text text-anchor=\"middle\" x=\"346.69\" y=\"-23.42\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->15 -->\n", - "<g id=\"edge212\" class=\"edge\"><title>15->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.374,-44.3732C341.157,-44.5182 349.133,-42.2704 349.133,-37.6298 349.133,-34.8019 346.171,-32.8626 341.643,-31.8118\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.647,-28.2981 331.374,-30.8864 341.019,-35.2698 341.647,-28.2981\"/>\n", - "<text text-anchor=\"middle\" x=\"361.186\" y=\"-33.4298\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge106\" class=\"edge\">\n", + "<title>15->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.37,-44.37C341.16,-44.52 349.13,-42.27 349.13,-37.63 349.13,-34.8 346.17,-32.86 341.64,-31.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.65,-28.3 331.37,-30.89 341.02,-35.27 341.65,-28.3\"/>\n", + "<text text-anchor=\"middle\" x=\"363.63\" y=\"-33.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->14 -->\n", - "<g id=\"edge214\" class=\"edge\"><title>15->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M277.009,-45.0535C261.08,-51.8694 240.888,-61.9328 224.205,-71.2842\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.269,-68.3601 215.347,-76.381 225.76,-74.4274 222.269,-68.3601\"/>\n", - "<text text-anchor=\"middle\" x=\"256.607\" y=\"-65.9688\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge107\" class=\"edge\">\n", + "<title>15->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M277.01,-45.05C261.08,-51.87 240.89,-61.93 224.2,-71.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.27,-68.36 215.35,-76.38 225.76,-74.43 222.27,-68.36\"/>\n", + "<text text-anchor=\"middle\" x=\"236.11\" y=\"-61.97\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->13 -->\n", - "<g id=\"edge216\" class=\"edge\"><title>15->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M276.831,-51.7621C237.974,-76.5936 167.38,-127.767 129.375,-158.547\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"126.836,-156.104 121.339,-165.161 131.285,-161.509 126.836,-156.104\"/>\n", - "<text text-anchor=\"middle\" x=\"195.103\" y=\"-88.9547\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge108\" class=\"edge\">\n", + "<title>15->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M276.83,-51.76C237.97,-76.59 167.38,-127.77 129.38,-158.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"126.84,-156.1 121.34,-165.16 131.28,-161.51 126.84,-156.1\"/>\n", + "<text text-anchor=\"middle\" x=\"217.6\" y=\"-108.95\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->12 -->\n", - "<g id=\"edge218\" class=\"edge\"><title>15->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.294,-55.9363C229.879,-101.067 113.626,-217.254 66.7012,-269.329\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.8093,-267.315 59.786,-277.116 69.0433,-271.963 63.8093,-267.315\"/>\n", - "<text text-anchor=\"middle\" x=\"162.498\" y=\"-147.433\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge109\" class=\"edge\">\n", + "<title>15->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M280.29,-55.94C229.88,-101.07 113.63,-217.25 66.7,-269.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.81,-267.31 59.79,-277.12 69.04,-271.96 63.81,-267.31\"/>\n", + "<text text-anchor=\"middle\" x=\"159\" y=\"-151.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->11 -->\n", - "<g id=\"edge220\" class=\"edge\"><title>15->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M287.014,-55.7051C236.631,-117.25 90.3265,-318.431 42.3188,-391.928\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"39.1828,-390.333 36.7136,-400.636 45.0689,-394.122 39.1828,-390.333\"/>\n", - "<text text-anchor=\"middle\" x=\"177.667\" y=\"-228.616\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge110\" class=\"edge\">\n", + "<title>15->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M287.01,-55.71C236.63,-117.25 90.33,-318.43 42.32,-391.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"39.18,-390.33 36.71,-400.64 45.07,-394.12 39.18,-390.33\"/>\n", + "<text text-anchor=\"middle\" x=\"150.17\" y=\"-227.62\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->10 -->\n", - "<g id=\"edge222\" class=\"edge\"><title>15->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M291.689,-55.8543C247.174,-131.949 98.089,-424.262 57.0067,-515.599\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"53.6924,-514.44 52.853,-525.001 60.0955,-517.268 53.6924,-514.44\"/>\n", - "<text text-anchor=\"middle\" x=\"188.348\" y=\"-288.526\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge111\" class=\"edge\">\n", + "<title>15->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M291.69,-55.85C247.17,-131.95 98.09,-424.26 57.01,-515.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"53.69,-514.44 52.85,-525 60.1,-517.27 53.69,-514.44\"/>\n", + "<text text-anchor=\"middle\" x=\"159.85\" y=\"-289.53\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->9 -->\n", - "<g id=\"edge224\" class=\"edge\"><title>15->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M295.619,-55.6571C261.538,-142.824 138.639,-520.582 109.54,-626.891\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"106.149,-626.023 106.952,-636.588 112.912,-627.828 106.149,-626.023\"/>\n", - "<text text-anchor=\"middle\" x=\"216.579\" y=\"-341.074\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge112\" class=\"edge\">\n", + "<title>15->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M295.62,-55.66C261.54,-142.82 138.64,-520.58 109.54,-626.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"106.15,-626.02 106.95,-636.59 112.91,-627.83 106.15,-626.02\"/>\n", + "<text text-anchor=\"middle\" x=\"188.08\" y=\"-345.07\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->8 -->\n", - "<g id=\"edge226\" class=\"edge\"><title>15->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M298.871,-55.7795C277.927,-151.609 206.957,-598.696 193.898,-715.544\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.416,-715.19 192.848,-725.502 197.378,-715.924 190.416,-715.19\"/>\n", - "<text text-anchor=\"middle\" x=\"232.385\" y=\"-379.462\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge113\" class=\"edge\">\n", + "<title>15->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M298.87,-55.78C277.93,-151.61 206.96,-598.7 193.9,-715.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.42,-715.19 192.85,-725.5 197.38,-715.92 190.42,-715.19\"/>\n", + "<text text-anchor=\"middle\" x=\"231.88\" y=\"-389.46\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->7 -->\n", - "<g id=\"edge228\" class=\"edge\"><title>15->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M301.882,-55.7352C296.062,-156.488 295.889,-647.971 301.361,-772.029\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"297.876,-772.424 301.872,-782.236 304.868,-772.074 297.876,-772.424\"/>\n", - "<text text-anchor=\"middle\" x=\"288.622\" y=\"-409.682\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge114\" class=\"edge\">\n", + "<title>15->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M301.88,-55.74C296.06,-156.49 295.89,-647.97 301.36,-772.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"297.88,-772.42 301.87,-782.24 304.87,-772.07 297.88,-772.42\"/>\n", + "<text text-anchor=\"middle\" x=\"287.12\" y=\"-417.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->6 -->\n", - "<g id=\"edge230\" class=\"edge\"><title>15->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M304.774,-55.7893C315.096,-158.502 395.368,-666.456 420.842,-792.032\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"417.457,-792.944 422.927,-802.018 424.309,-791.514 417.457,-792.944\"/>\n", - "<text text-anchor=\"middle\" x=\"348.808\" y=\"-421.711\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge115\" class=\"edge\">\n", + "<title>15->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M304.77,-55.79C315.1,-158.5 395.37,-666.46 420.84,-792.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"417.46,-792.94 422.93,-802.02 424.31,-791.51 417.46,-792.94\"/>\n", + "<text text-anchor=\"middle\" x=\"348.31\" y=\"-427.71\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->5 -->\n", - "<g id=\"edge232\" class=\"edge\"><title>15->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M307.676,-55.6793C334.276,-156.507 494.338,-649.742 540.052,-772.708\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"536.823,-774.066 543.63,-782.184 543.371,-771.592 536.823,-774.066\"/>\n", - "<text text-anchor=\"middle\" x=\"409.864\" y=\"-413.994\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge116\" class=\"edge\">\n", + "<title>15->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M307.68,-55.68C334.28,-156.51 494.34,-649.74 540.05,-772.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"536.82,-774.07 543.63,-782.18 543.37,-771.59 536.82,-774.07\"/>\n", + "<text text-anchor=\"middle\" x=\"438.36\" y=\"-402.99\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->4 -->\n", - "<g id=\"edge234\" class=\"edge\"><title>15->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M310.821,-55.7613C353.318,-151.87 582.112,-601.334 646.865,-716.58\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"643.945,-718.527 651.929,-725.492 650.031,-715.068 643.945,-718.527\"/>\n", - "<text text-anchor=\"middle\" x=\"464.843\" y=\"-388.971\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge117\" class=\"edge\">\n", + "<title>15->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M310.82,-55.76C353.32,-151.87 582.11,-601.33 646.86,-716.58\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"643.95,-718.53 651.93,-725.49 650.03,-715.07 643.95,-718.53\"/>\n", + "<text text-anchor=\"middle\" x=\"464.34\" y=\"-374.97\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->3 -->\n", - "<g id=\"edge236\" class=\"edge\"><title>15->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M314.417,-55.869C371.541,-143.995 648.168,-525.091 729.869,-628.74\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"727.324,-631.163 736.288,-636.811 732.802,-626.806 727.324,-631.163\"/>\n", - "<text text-anchor=\"middle\" x=\"509.143\" y=\"-347.105\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge118\" class=\"edge\">\n", + "<title>15->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M314.42,-55.87C371.54,-144 648.17,-525.09 729.87,-628.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"727.32,-631.16 736.29,-636.81 732.8,-626.81 727.32,-631.16\"/>\n", + "<text text-anchor=\"middle\" x=\"507.64\" y=\"-346.1\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->2 -->\n", - "<g id=\"edge238\" class=\"edge\"><title>15->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M318.545,-55.7028C387.59,-132.255 684.125,-429.115 779.735,-517.868\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"777.587,-520.648 787.312,-524.85 782.33,-515.5 777.587,-520.648\"/>\n", - "<text text-anchor=\"middle\" x=\"560.14\" y=\"-271.585\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge119\" class=\"edge\">\n", + "<title>15->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M318.54,-55.7C387.59,-132.26 684.13,-429.12 779.73,-517.87\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"777.59,-520.65 787.31,-524.85 782.33,-515.5 777.59,-520.65\"/>\n", + "<text text-anchor=\"middle\" x=\"534.64\" y=\"-290.59\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 15->1 -->\n", - "<g id=\"edge240\" class=\"edge\"><title>15->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.44,-50.1878C408.568,-79.6681 628.052,-151.109 715.723,-175.426\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.931,-178.837 725.499,-178.087 716.77,-172.083 714.931,-178.837\"/>\n", - "<text text-anchor=\"middle\" x=\"527.581\" y=\"-96.6067\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge120\" class=\"edge\">\n", + "<title>15->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.44,-50.19C408.57,-79.67 628.05,-151.11 715.72,-175.43\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.93,-178.84 725.5,-178.09 716.77,-172.08 714.93,-178.84\"/>\n", + "<text text-anchor=\"middle\" x=\"509.08\" y=\"-116.61\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->20 -->\n", - "<g id=\"edge242\" class=\"edge\"><title>14->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.513,-106.619C318.409,-143.839 659.058,-254.645 772.465,-286.652\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.836,-290.109 782.408,-289.414 773.71,-283.365 771.836,-290.109\"/>\n", - "<text text-anchor=\"middle\" x=\"491.989\" y=\"-204.435\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge121\" class=\"edge\">\n", + "<title>14->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.51,-106.62C318.41,-143.84 659.06,-254.65 772.47,-286.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.84,-290.11 782.41,-289.41 773.71,-283.36 771.84,-290.11\"/>\n", + "<text text-anchor=\"middle\" x=\"481.49\" y=\"-200.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->19 -->\n", - "<g id=\"edge244\" class=\"edge\"><title>14->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.559,-111.854C321.034,-169.043 677.057,-350.552 792.63,-404.166\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.248,-407.383 801.796,-408.379 794.172,-401.022 791.248,-407.383\"/>\n", - "<text text-anchor=\"middle\" x=\"512.095\" y=\"-241.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge122\" class=\"edge\">\n", + "<title>14->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.56,-111.85C321.03,-169.04 677.06,-350.55 792.63,-404.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.25,-407.38 801.8,-408.38 794.17,-401.02 791.25,-407.38\"/>\n", + "<text text-anchor=\"middle\" x=\"491.59\" y=\"-261.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->18 -->\n", - "<g id=\"edge246\" class=\"edge\"><title>14->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.37,-97.9547C299.27,-102.303 534.412,-102.472 626.357,-98.4608\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.768,-101.945 636.587,-97.9647 626.429,-94.9533 626.768,-101.945\"/>\n", - "<text text-anchor=\"middle\" x=\"422.864\" y=\"-103.008\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge123\" class=\"edge\">\n", + "<title>14->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.37,-97.95C299.27,-102.3 534.41,-102.47 626.36,-98.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.77,-101.95 636.59,-97.96 626.43,-94.95 626.77,-101.95\"/>\n", + "<text text-anchor=\"middle\" x=\"408.36\" y=\"-102.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->17 -->\n", - "<g id=\"edge248\" class=\"edge\"><title>14->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.36,-94.1009C282.889,-87.885 441.781,-62.9267 514.552,-47.9706\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.581,-51.3306 524.642,-45.84 514.134,-44.4816 515.581,-51.3306\"/>\n", - "<text text-anchor=\"middle\" x=\"365.956\" y=\"-55.8357\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge124\" class=\"edge\">\n", + "<title>14->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.36,-94.1C282.89,-87.89 441.78,-62.93 514.55,-47.97\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.58,-51.33 524.64,-45.84 514.13,-44.48 515.58,-51.33\"/>\n", + "<text text-anchor=\"middle\" x=\"352.46\" y=\"-74.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->16 -->\n", - "<g id=\"edge250\" class=\"edge\"><title>14->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.365,-90.4407C261.694,-79.6968 343.643,-53.3284 391.296,-35.3518\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"392.841,-38.508 400.918,-31.6519 390.328,-31.9744 392.841,-38.508\"/>\n", - "<text text-anchor=\"middle\" x=\"308.331\" y=\"-70.6963\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge125\" class=\"edge\">\n", + "<title>14->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.36,-90.44C261.69,-79.7 343.64,-53.33 391.3,-35.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"392.84,-38.51 400.92,-31.65 390.33,-31.97 392.84,-38.51\"/>\n", + "<text text-anchor=\"middle\" x=\"290.83\" y=\"-66.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->15 -->\n", - "<g id=\"edge252\" class=\"edge\"><title>14->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.451,-87.1739C235.38,-80.358 255.572,-70.2946 272.255,-60.9432\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"274.191,-63.8673 281.113,-55.8464 270.7,-57.8 274.191,-63.8673\"/>\n", - "<text text-anchor=\"middle\" x=\"239.853\" y=\"-57.8586\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge126\" class=\"edge\">\n", + "<title>14->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.45,-87.17C235.38,-80.36 255.57,-70.29 272.26,-60.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"274.19,-63.87 281.11,-55.85 270.7,-57.8 274.19,-63.87\"/>\n", + "<text text-anchor=\"middle\" x=\"260.35\" y=\"-77.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->14 -->\n", - "<g id=\"edge254\" class=\"edge\"><title>14->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.568,-101.341C229.351,-101.486 237.327,-99.2383 237.327,-94.5976 237.327,-91.7698 234.365,-89.8304 229.838,-88.7796\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.842,-85.2659 219.568,-87.8542 229.213,-92.2377 229.842,-85.2659\"/>\n", - "<text text-anchor=\"middle\" x=\"249.38\" y=\"-90.3976\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge127\" class=\"edge\">\n", + "<title>14->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.57,-101.34C229.35,-101.49 237.33,-99.24 237.33,-94.6 237.33,-91.77 234.37,-89.83 229.84,-88.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.84,-85.27 219.57,-87.85 229.21,-92.24 229.84,-85.27\"/>\n", + "<text text-anchor=\"middle\" x=\"251.83\" y=\"-90.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->13 -->\n", - "<g id=\"edge256\" class=\"edge\"><title>14->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M165.728,-112.779C151.274,-125.702 133.866,-143.137 121.104,-157.485\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"118.424,-155.233 114.54,-165.09 123.723,-159.807 118.424,-155.233\"/>\n", - "<text text-anchor=\"middle\" x=\"154.416\" y=\"-141.932\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge128\" class=\"edge\">\n", + "<title>14->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M165.73,-112.78C151.27,-125.7 133.87,-143.14 121.1,-157.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"118.42,-155.23 114.54,-165.09 123.72,-159.81 118.42,-155.23\"/>\n", + "<text text-anchor=\"middle\" x=\"128.92\" y=\"-138.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->12 -->\n", - "<g id=\"edge258\" class=\"edge\"><title>14->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M173.799,-112.771C144.066,-148.311 86.8743,-226.876 60.4212,-268.365\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"57.2913,-266.77 54.9718,-277.108 63.2318,-270.473 57.2913,-266.77\"/>\n", - "<text text-anchor=\"middle\" x=\"105.11\" y=\"-177.368\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge129\" class=\"edge\">\n", + "<title>14->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M173.8,-112.77C144.07,-148.31 86.87,-226.88 60.42,-268.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"57.29,-266.77 54.97,-277.11 63.23,-270.47 57.29,-266.77\"/>\n", + "<text text-anchor=\"middle\" x=\"131.61\" y=\"-194.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->11 -->\n", - "<g id=\"edge260\" class=\"edge\"><title>14->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.16,-112.84C146.823,-166.94 65.3624,-326.5 36.8016,-391.291\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"33.4279,-390.276 32.6876,-400.845 39.8572,-393.045 33.4279,-390.276\"/>\n", - "<text text-anchor=\"middle\" x=\"93.9809\" y=\"-240.865\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge130\" class=\"edge\">\n", + "<title>14->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.16,-112.84C146.82,-166.94 65.36,-326.5 36.8,-391.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"33.43,-390.28 32.69,-400.84 39.86,-393.04 33.43,-390.28\"/>\n", + "<text text-anchor=\"middle\" x=\"93.48\" y=\"-255.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->10 -->\n", - "<g id=\"edge262\" class=\"edge\"><title>14->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.37,-112.672C155.682,-181.97 74.6371,-430.868 52.1266,-515.003\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"48.6909,-514.309 49.5682,-524.867 55.4667,-516.066 48.6909,-514.309\"/>\n", - "<text text-anchor=\"middle\" x=\"103.748\" y=\"-305.638\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge131\" class=\"edge\">\n", + "<title>14->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.37,-112.67C155.68,-181.97 74.64,-430.87 52.13,-515\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"48.69,-514.31 49.57,-524.87 55.47,-516.07 48.69,-514.31\"/>\n", + "<text text-anchor=\"middle\" x=\"103.25\" y=\"-317.64\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->9 -->\n", - "<g id=\"edge264\" class=\"edge\"><title>14->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M186.777,-112.826C168.475,-194.434 115.695,-526.547 104.911,-626.331\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"101.402,-626.247 103.879,-636.548 108.366,-626.95 101.402,-626.247\"/>\n", - "<text text-anchor=\"middle\" x=\"159.844\" y=\"-367.378\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge132\" class=\"edge\">\n", + "<title>14->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M186.78,-112.83C168.47,-194.43 115.69,-526.55 104.91,-626.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"101.4,-626.25 103.88,-636.55 108.37,-626.95 101.4,-626.25\"/>\n", + "<text text-anchor=\"middle\" x=\"131.34\" y=\"-373.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->8 -->\n", - "<g id=\"edge266\" class=\"edge\"><title>14->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M189.906,-112.631C184.325,-202.771 184.141,-604.523 189.353,-715.221\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"185.863,-715.49 189.892,-725.289 192.853,-715.116 185.863,-715.49\"/>\n", - "<text text-anchor=\"middle\" x=\"202.629\" y=\"-409.726\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge133\" class=\"edge\">\n", + "<title>14->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M189.91,-112.63C184.32,-202.77 184.14,-604.52 189.35,-715.22\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"185.86,-715.49 189.89,-725.29 192.85,-715.12 185.86,-715.49\"/>\n", + "<text text-anchor=\"middle\" x=\"175.13\" y=\"-417.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->7 -->\n", - "<g id=\"edge268\" class=\"edge\"><title>14->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.86,-112.763C202.25,-208.627 272.872,-655.696 296.796,-772.522\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"293.407,-773.416 298.896,-782.478 300.256,-771.97 293.407,-773.416\"/>\n", - "<text text-anchor=\"middle\" x=\"230.828\" y=\"-440.442\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge134\" class=\"edge\">\n", + "<title>14->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.86,-112.76C202.25,-208.63 272.87,-655.7 296.8,-772.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"293.41,-773.42 298.9,-782.48 300.26,-771.97 293.41,-773.42\"/>\n", + "<text text-anchor=\"middle\" x=\"230.33\" y=\"-446.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->6 -->\n", - "<g id=\"edge270\" class=\"edge\"><title>14->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M195.876,-112.875C221.644,-210.863 371.853,-673.774 416.069,-792.4\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"412.844,-793.765 419.659,-801.877 419.39,-791.286 412.844,-793.765\"/>\n", - "<text text-anchor=\"middle\" x=\"319.973\" y=\"-444.437\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge135\" class=\"edge\">\n", + "<title>14->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M195.88,-112.88C221.64,-210.86 371.85,-673.77 416.07,-792.4\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"412.84,-793.77 419.66,-801.88 419.39,-791.29 412.84,-793.77\"/>\n", + "<text text-anchor=\"middle\" x=\"291.47\" y=\"-456.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->5 -->\n", - "<g id=\"edge272\" class=\"edge\"><title>14->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M199.015,-112.729C241.512,-208.838 470.306,-658.302 535.059,-773.548\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"532.14,-775.495 540.123,-782.46 538.226,-772.036 532.14,-775.495\"/>\n", - "<text text-anchor=\"middle\" x=\"353.037\" y=\"-445.939\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge136\" class=\"edge\">\n", + "<title>14->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M199.02,-112.73C241.51,-208.84 470.31,-658.3 535.06,-773.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"532.14,-775.49 540.12,-782.46 538.23,-772.04 532.14,-775.49\"/>\n", + "<text text-anchor=\"middle\" x=\"352.54\" y=\"-446.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->4 -->\n", - "<g id=\"edge274\" class=\"edge\"><title>14->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M202.565,-112.665C261.552,-203.497 556.306,-609.545 641.067,-717.269\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"638.524,-719.696 647.482,-725.353 644.007,-715.344 638.524,-719.696\"/>\n", - "<text text-anchor=\"middle\" x=\"434.816\" y=\"-401.767\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge137\" class=\"edge\">\n", + "<title>14->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M202.57,-112.66C261.55,-203.5 556.31,-609.54 641.07,-717.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"638.52,-719.7 647.48,-725.35 644.01,-715.34 638.52,-719.7\"/>\n", + "<text text-anchor=\"middle\" x=\"407.32\" y=\"-403.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->3 -->\n", - "<g id=\"edge276\" class=\"edge\"><title>14->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M207.033,-112.817C281.906,-195.417 620.176,-533.99 722.915,-629.611\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"720.737,-632.364 730.456,-636.581 725.488,-627.224 720.737,-632.364\"/>\n", - "<text text-anchor=\"middle\" x=\"475.974\" y=\"-356.014\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge138\" class=\"edge\">\n", + "<title>14->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M207.03,-112.82C281.91,-195.42 620.18,-533.99 722.91,-629.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"720.74,-632.36 730.46,-636.58 725.49,-627.22 720.74,-632.36\"/>\n", + "<text text-anchor=\"middle\" x=\"479.47\" y=\"-360.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->2 -->\n", - "<g id=\"edge278\" class=\"edge\"><title>14->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.699,-112.751C302.049,-184.079 659.427,-443.964 774.003,-521.264\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.199,-524.268 782.454,-526.928 776.095,-518.453 772.199,-524.268\"/>\n", - "<text text-anchor=\"middle\" x=\"501.351\" y=\"-300.808\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge139\" class=\"edge\">\n", + "<title>14->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.7,-112.75C302.05,-184.08 659.43,-443.96 774,-521.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.2,-524.27 782.45,-526.93 776.1,-518.45 772.2,-524.27\"/>\n", + "<text text-anchor=\"middle\" x=\"478.85\" y=\"-320.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 14->1 -->\n", - "<g id=\"edge280\" class=\"edge\"><title>14->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.616,-102.107C311.524,-121.384 609.888,-168.778 715.267,-181.026\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.098,-184.528 725.425,-182.16 715.876,-177.572 715.098,-184.528\"/>\n", - "<text text-anchor=\"middle\" x=\"468.441\" y=\"-126.366\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge140\" class=\"edge\">\n", + "<title>14->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.62,-102.11C311.52,-121.38 609.89,-168.78 715.27,-181.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.1,-184.53 725.43,-182.16 715.88,-177.57 715.1,-184.53\"/>\n", + "<text text-anchor=\"middle\" x=\"452.94\" y=\"-145.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->20 -->\n", - "<g id=\"edge282\" class=\"edge\"><title>13->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.827,-190.509C240.005,-212.953 646.191,-277.418 772.073,-292.467\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.015,-295.984 782.351,-293.655 772.819,-289.03 772.015,-295.984\"/>\n", - "<text text-anchor=\"middle\" x=\"450.45\" y=\"-248.288\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge141\" class=\"edge\">\n", + "<title>13->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.83,-190.51C240.01,-212.95 646.19,-277.42 772.07,-292.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.02,-295.98 782.35,-293.66 772.82,-289.03 772.02,-295.98\"/>\n", + "<text text-anchor=\"middle\" x=\"436.95\" y=\"-245.29\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->19 -->\n", - "<g id=\"edge284\" class=\"edge\"><title>13->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.726,-195.1C242.1,-236.686 664.263,-373.973 792.188,-410.374\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.347,-413.773 801.921,-413.105 793.239,-407.034 791.347,-413.773\"/>\n", - "<text text-anchor=\"middle\" x=\"465.457\" y=\"-286.537\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge142\" class=\"edge\">\n", + "<title>13->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.73,-195.1C242.1,-236.69 664.26,-373.97 792.19,-410.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.35,-413.77 801.92,-413.11 793.24,-407.03 791.35,-413.77\"/>\n", + "<text text-anchor=\"middle\" x=\"446.96\" y=\"-306.54\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->18 -->\n", - "<g id=\"edge286\" class=\"edge\"><title>13->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.725,-182.159C222.475,-172.39 521.3,-125.232 626.645,-104.129\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"627.415,-107.544 636.511,-102.11 626.012,-100.687 627.415,-107.544\"/>\n", - "<text text-anchor=\"middle\" x=\"377.685\" y=\"-127.944\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge143\" class=\"edge\">\n", + "<title>13->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.72,-182.16C222.48,-172.39 521.3,-125.23 626.65,-104.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"627.42,-107.54 636.51,-102.11 626.01,-100.69 627.42,-107.54\"/>\n", + "<text text-anchor=\"middle\" x=\"364.18\" y=\"-146.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->17 -->\n", - "<g id=\"edge288\" class=\"edge\"><title>13->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.687,-178.075C207.697,-157.569 427.878,-86.2325 515.452,-53.6713\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"516.847,-56.8859 524.971,-50.0845 514.379,-50.3355 516.847,-56.8859\"/>\n", - "<text text-anchor=\"middle\" x=\"320.07\" y=\"-99.6729\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge144\" class=\"edge\">\n", + "<title>13->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.69,-178.07C207.7,-157.57 427.88,-86.23 515.45,-53.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"516.85,-56.89 524.97,-50.08 514.38,-50.34 516.85,-56.89\"/>\n", + "<text text-anchor=\"middle\" x=\"308.57\" y=\"-119.67\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->16 -->\n", - "<g id=\"edge290\" class=\"edge\"><title>13->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.803,-173.778C189.388,-148.014 327.315,-77.9846 392.628,-41.1167\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"394.395,-44.1383 401.347,-36.1427 390.926,-38.0583 394.395,-44.1383\"/>\n", - "<text text-anchor=\"middle\" x=\"255.716\" y=\"-91.2476\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge145\" class=\"edge\">\n", + "<title>13->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.8,-173.78C189.39,-148.01 327.32,-77.98 392.63,-41.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"394.4,-44.14 401.35,-36.14 390.93,-38.06 394.4,-44.14\"/>\n", + "<text text-anchor=\"middle\" x=\"247.22\" y=\"-111.25\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->15 -->\n", - "<g id=\"edge292\" class=\"edge\"><title>13->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.899,-169.195C169.757,-144.363 240.351,-93.1896 278.355,-62.4096\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"280.894,-64.8532 286.391,-55.796 276.446,-59.4483 280.894,-64.8532\"/>\n", - "<text text-anchor=\"middle\" x=\"212.627\" y=\"-123.602\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge146\" class=\"edge\">\n", + "<title>13->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.9,-169.19C169.76,-144.36 240.35,-93.19 278.36,-62.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"280.89,-64.85 286.39,-55.8 276.45,-59.45 280.89,-64.85\"/>\n", + "<text text-anchor=\"middle\" x=\"190.13\" y=\"-119.6\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->14 -->\n", - "<g id=\"edge294\" class=\"edge\"><title>13->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.197,-165.146C144.65,-152.223 162.059,-134.788 174.821,-120.44\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.501,-122.692 181.385,-112.835 172.201,-118.118 177.501,-122.692\"/>\n", - "<text text-anchor=\"middle\" x=\"163.509\" y=\"-149.593\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge147\" class=\"edge\">\n", + "<title>13->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.2,-165.15C144.65,-152.22 162.06,-134.79 174.82,-120.44\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.5,-122.69 181.38,-112.83 172.2,-118.12 177.5,-122.69\"/>\n", + "<text text-anchor=\"middle\" x=\"159.76\" y=\"-131.59\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->13 -->\n", - "<g id=\"edge296\" class=\"edge\"><title>13->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.838,-190.071C140.622,-190.216 148.598,-187.968 148.598,-183.327 148.598,-180.499 145.636,-178.56 141.108,-177.509\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.112,-173.995 130.838,-176.584 140.484,-180.967 141.112,-173.995\"/>\n", - "<text text-anchor=\"middle\" x=\"160.651\" y=\"-179.127\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge148\" class=\"edge\">\n", + "<title>13->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.84,-190.07C140.62,-190.22 148.6,-187.97 148.6,-183.33 148.6,-180.5 145.64,-178.56 141.11,-177.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.11,-174 130.84,-176.58 140.48,-180.97 141.11,-174\"/>\n", + "<text text-anchor=\"middle\" x=\"163.1\" y=\"-179.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->12 -->\n", - "<g id=\"edge298\" class=\"edge\"><title>13->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M88.3694,-201.399C77.3492,-219.259 63.1973,-246.754 54.3256,-267.375\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"50.9865,-266.293 50.4315,-276.873 57.4633,-268.948 50.9865,-266.293\"/>\n", - "<text text-anchor=\"middle\" x=\"57.3475\" y=\"-223.187\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge149\" class=\"edge\">\n", + "<title>13->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M88.37,-201.4C77.35,-219.26 63.2,-246.75 54.33,-267.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"50.99,-266.29 50.43,-276.87 57.46,-268.95 50.99,-266.29\"/>\n", + "<text text-anchor=\"middle\" x=\"56.85\" y=\"-238.19\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->11 -->\n", - "<g id=\"edge300\" class=\"edge\"><title>13->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M93.609,-201.41C76.5482,-242.305 43.9439,-342.05 31.4133,-391.027\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"27.9637,-390.4 28.9933,-400.945 34.7641,-392.059 27.9637,-390.4\"/>\n", - "<text text-anchor=\"middle\" x=\"76.5111\" y=\"-296.019\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge150\" class=\"edge\">\n", + "<title>13->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M93.61,-201.41C76.55,-242.31 43.94,-342.05 31.41,-391.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"27.96,-390.4 28.99,-400.94 34.76,-392.06 27.96,-390.4\"/>\n", + "<text text-anchor=\"middle\" x=\"77.01\" y=\"-300.02\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->10 -->\n", - "<g id=\"edge302\" class=\"edge\"><title>13->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M97.4298,-201.654C83.5821,-260.345 54.3102,-443.912 47.2484,-514.741\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"43.7605,-514.45 46.3416,-524.726 50.7319,-515.083 43.7605,-514.45\"/>\n", - "<text text-anchor=\"middle\" x=\"86.3391\" y=\"-355.998\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge151\" class=\"edge\">\n", + "<title>13->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M97.43,-201.65C83.58,-260.35 54.31,-443.91 47.25,-514.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"43.76,-514.45 46.34,-524.73 50.73,-515.08 43.76,-514.45\"/>\n", + "<text text-anchor=\"middle\" x=\"57.84\" y=\"-362\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->9 -->\n", - "<g id=\"edge304\" class=\"edge\"><title>13->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M100.784,-201.521C95.7444,-273.572 95.5438,-539.223 100.182,-626.687\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"96.689,-626.904 100.788,-636.674 103.676,-626.48 96.689,-626.904\"/>\n", - "<text text-anchor=\"middle\" x=\"87.4833\" y=\"-409.904\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge152\" class=\"edge\">\n", + "<title>13->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M100.78,-201.52C95.74,-273.57 95.54,-539.22 100.18,-626.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"96.69,-626.9 100.79,-636.67 103.68,-626.48 96.69,-626.9\"/>\n", + "<text text-anchor=\"middle\" x=\"114.98\" y=\"-402.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->8 -->\n", - "<g id=\"edge306\" class=\"edge\"><title>13->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.863,-201.42C111.343,-282.921 163.926,-616.235 184.663,-715.515\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.268,-716.376 186.799,-725.412 188.11,-714.899 181.268,-716.376\"/>\n", - "<text text-anchor=\"middle\" x=\"158.263\" y=\"-452.268\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge153\" class=\"edge\">\n", + "<title>13->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.86,-201.42C111.34,-282.92 163.93,-616.24 184.66,-715.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.27,-716.38 186.8,-725.41 188.11,-714.9 181.27,-716.38\"/>\n", + "<text text-anchor=\"middle\" x=\"129.76\" y=\"-462.27\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->7 -->\n", - "<g id=\"edge308\" class=\"edge\"><title>13->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.953,-201.559C129.606,-289.174 252.124,-666.907 291.921,-772.818\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"288.773,-774.384 295.615,-782.474 295.311,-771.883 288.773,-774.384\"/>\n", - "<text text-anchor=\"middle\" x=\"213.437\" y=\"-478.989\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge154\" class=\"edge\">\n", + "<title>13->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.95,-201.56C129.61,-289.17 252.12,-666.91 291.92,-772.82\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"288.77,-774.38 295.61,-782.47 295.31,-771.88 288.77,-774.38\"/>\n", + "<text text-anchor=\"middle\" x=\"184.94\" y=\"-490.99\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->6 -->\n", - "<g id=\"edge310\" class=\"edge\"><title>13->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.157,-201.441C149.472,-290.965 350.416,-685.796 410.946,-793.142\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.038,-795.108 416.034,-802.059 414.118,-791.639 408.038,-795.108\"/>\n", - "<text text-anchor=\"middle\" x=\"274.551\" y=\"-486.091\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge155\" class=\"edge\">\n", + "<title>13->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.16,-201.44C149.47,-290.96 350.42,-685.8 410.95,-793.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.04,-795.11 416.03,-802.06 414.12,-791.64 408.04,-795.11\"/>\n", + "<text text-anchor=\"middle\" x=\"246.05\" y=\"-501.09\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->5 -->\n", - "<g id=\"edge312\" class=\"edge\"><title>13->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M113.882,-201.566C171.005,-289.693 447.633,-670.788 529.333,-774.437\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"526.788,-776.861 535.752,-782.508 532.267,-772.503 526.788,-776.861\"/>\n", - "<text text-anchor=\"middle\" x=\"308.608\" y=\"-492.802\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge156\" class=\"edge\">\n", + "<title>13->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M113.88,-201.57C171.01,-289.69 447.63,-670.79 529.33,-774.44\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"526.79,-776.86 535.75,-782.51 532.27,-772.5 526.79,-776.86\"/>\n", + "<text text-anchor=\"middle\" x=\"307.11\" y=\"-491.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->4 -->\n", - "<g id=\"edge314\" class=\"edge\"><title>13->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M118.304,-201.547C193.177,-284.146 531.446,-622.72 634.185,-718.341\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"632.007,-721.094 641.727,-725.311 636.758,-715.953 632.007,-721.094\"/>\n", - "<text text-anchor=\"middle\" x=\"387.244\" y=\"-444.744\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge157\" class=\"edge\">\n", + "<title>13->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M118.3,-201.55C193.18,-284.15 531.45,-622.72 634.19,-718.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"632.01,-721.09 641.73,-725.31 636.76,-715.95 632.01,-721.09\"/>\n", + "<text text-anchor=\"middle\" x=\"361.74\" y=\"-463.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->3 -->\n", - "<g id=\"edge316\" class=\"edge\"><title>13->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M124.003,-201.429C216.699,-275.294 598.227,-552.72 717.067,-633.005\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.233,-635.989 725.487,-638.656 719.134,-630.177 715.233,-635.989\"/>\n", - "<text text-anchor=\"middle\" x=\"428.535\" y=\"-401.017\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge158\" class=\"edge\">\n", + "<title>13->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M124,-201.43C216.7,-275.29 598.23,-552.72 717.07,-633\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.23,-635.99 725.49,-638.66 719.13,-630.18 715.23,-635.99\"/>\n", + "<text text-anchor=\"middle\" x=\"406.04\" y=\"-421.02\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->2 -->\n", - "<g id=\"edge318\" class=\"edge\"><title>13->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.84,-200.433C240.404,-261.957 648.742,-470.116 773.255,-528.06\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.851,-531.267 782.398,-532.278 774.783,-524.911 771.851,-531.267\"/>\n", - "<text text-anchor=\"middle\" x=\"458.047\" y=\"-348.046\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge159\" class=\"edge\">\n", + "<title>13->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.84,-200.43C240.4,-261.96 648.74,-470.12 773.25,-528.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.85,-531.27 782.4,-532.28 774.78,-524.91 771.85,-531.27\"/>\n", + "<text text-anchor=\"middle\" x=\"437.55\" y=\"-368.05\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 13->1 -->\n", - "<g id=\"edge320\" class=\"edge\"><title>13->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.656,-186.241C233.11,-191.204 597.393,-191.352 715.374,-186.682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.532,-190.179 725.37,-186.246 715.227,-183.185 715.532,-190.179\"/>\n", - "<text text-anchor=\"middle\" x=\"423.015\" y=\"-173.261\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge160\" class=\"edge\">\n", + "<title>13->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.66,-186.24C233.11,-191.2 597.39,-191.35 715.37,-186.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.53,-190.18 725.37,-186.25 715.23,-183.19 715.53,-190.18\"/>\n", + "<text text-anchor=\"middle\" x=\"408.52\" y=\"-190.26\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->20 -->\n", - "<g id=\"edge322\" class=\"edge\"><title>12->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.7811,-297.845C189.17,-303.086 639.021,-303.225 772.179,-298.263\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.44,-301.755 782.288,-297.848 772.153,-294.761 772.44,-301.755\"/>\n", - "<text text-anchor=\"middle\" x=\"422.98\" y=\"-284.854\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge161\" class=\"edge\">\n", + "<title>12->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.78,-297.84C189.17,-303.09 639.02,-303.23 772.18,-298.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.44,-301.75 782.29,-297.85 772.15,-294.76 772.44,-301.75\"/>\n", + "<text text-anchor=\"middle\" x=\"408.48\" y=\"-301.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->19 -->\n", - "<g id=\"edge324\" class=\"edge\"><title>12->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.0555,-302.223C191.988,-326.225 656.102,-399.858 791.732,-416.263\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.676,-419.781 802.015,-417.468 792.49,-412.828 791.676,-419.781\"/>\n", - "<text text-anchor=\"middle\" x=\"431.894\" y=\"-366.043\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge162\" class=\"edge\">\n", + "<title>12->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.06,-302.22C191.99,-326.23 656.1,-399.86 791.73,-416.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"791.68,-419.78 802.02,-417.47 792.49,-412.83 791.68,-419.78\"/>\n", + "<text text-anchor=\"middle\" x=\"418.39\" y=\"-363.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->18 -->\n", - "<g id=\"edge326\" class=\"edge\"><title>12->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.6616,-289.434C172.393,-262.513 513.551,-151.849 626.892,-110.235\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"628.363,-113.422 636.519,-106.66 625.926,-106.86 628.363,-113.422\"/>\n", - "<text text-anchor=\"middle\" x=\"347.277\" y=\"-183.634\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge163\" class=\"edge\">\n", + "<title>12->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.66,-289.43C172.39,-262.51 513.55,-151.85 626.89,-110.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"628.36,-113.42 636.52,-106.66 625.93,-106.86 628.36,-113.42\"/>\n", + "<text text-anchor=\"middle\" x=\"335.78\" y=\"-203.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->17 -->\n", - "<g id=\"edge328\" class=\"edge\"><title>12->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8331,-284.849C158.909,-246.607 419.792,-113.896 515.951,-60.2264\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"517.733,-63.2398 524.731,-55.2851 514.3,-57.1395 517.733,-63.2398\"/>\n", - "<text text-anchor=\"middle\" x=\"288.892\" y=\"-156.338\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge164\" class=\"edge\">\n", + "<title>12->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.83,-284.85C158.91,-246.61 419.79,-113.9 515.95,-60.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"517.73,-63.24 524.73,-55.29 514.3,-57.14 517.73,-63.24\"/>\n", + "<text text-anchor=\"middle\" x=\"280.39\" y=\"-176.34\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->16 -->\n", - "<g id=\"edge330\" class=\"edge\"><title>12->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.7494,-279.829C143.886,-234.019 330.41,-98.61 400.758,-42.5685\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"403.151,-45.1359 408.746,-36.139 398.761,-39.683 403.151,-45.1359\"/>\n", - "<text text-anchor=\"middle\" x=\"245.254\" y=\"-168.999\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge165\" class=\"edge\">\n", + "<title>12->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.75,-279.83C143.89,-234.02 330.41,-98.61 400.76,-42.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"403.15,-45.14 408.75,-36.14 398.76,-39.68 403.15,-45.14\"/>\n", + "<text text-anchor=\"middle\" x=\"222.75\" y=\"-165\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->15 -->\n", - "<g id=\"edge332\" class=\"edge\"><title>12->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M70.4684,-276.826C120.883,-231.696 237.137,-115.509 284.061,-63.4334\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"286.953,-65.4479 290.977,-55.6467 281.719,-60.7997 286.953,-65.4479\"/>\n", - "<text text-anchor=\"middle\" x=\"166.265\" y=\"-154.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge166\" class=\"edge\">\n", + "<title>12->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M70.47,-276.83C120.88,-231.7 237.14,-115.51 284.06,-63.43\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"286.95,-65.45 290.98,-55.65 281.72,-60.8 286.95,-65.45\"/>\n", + "<text text-anchor=\"middle\" x=\"191.76\" y=\"-173.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->14 -->\n", - "<g id=\"edge334\" class=\"edge\"><title>12->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M65.1579,-276.959C94.8909,-241.419 152.083,-162.854 178.536,-121.365\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.666,-122.961 183.985,-112.623 175.725,-119.258 181.666,-122.961\"/>\n", - "<text text-anchor=\"middle\" x=\"133.847\" y=\"-203.962\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge167\" class=\"edge\">\n", + "<title>12->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M65.16,-276.96C94.89,-241.42 152.08,-162.85 178.54,-121.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.67,-122.96 183.99,-112.62 175.73,-119.26 181.67,-122.96\"/>\n", + "<text text-anchor=\"middle\" x=\"107.35\" y=\"-202.96\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->13 -->\n", - "<g id=\"edge336\" class=\"edge\"><title>12->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.858,-277.061C72.8782,-259.201 87.0301,-231.706 95.9018,-211.085\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"99.2409,-212.167 99.796,-201.587 92.7641,-209.512 99.2409,-212.167\"/>\n", - "<text text-anchor=\"middle\" x=\"64.8799\" y=\"-232.873\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge168\" class=\"edge\">\n", + "<title>12->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.86,-277.06C72.88,-259.2 87.03,-231.71 95.9,-211.09\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"99.24,-212.17 99.8,-201.59 92.76,-209.51 99.24,-212.17\"/>\n", + "<text text-anchor=\"middle\" x=\"93.38\" y=\"-232.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->12 -->\n", - "<g id=\"edge338\" class=\"edge\"><title>12->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8706,-301.876C83.6537,-302.021 91.6298,-299.773 91.6298,-295.133 91.6298,-292.305 88.668,-290.366 84.1403,-289.315\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.1443,-285.801 73.8706,-288.389 83.5161,-292.773 84.1443,-285.801\"/>\n", - "<text text-anchor=\"middle\" x=\"103.683\" y=\"-290.933\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge169\" class=\"edge\">\n", + "<title>12->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.87,-301.88C83.65,-302.02 91.63,-299.77 91.63,-295.13 91.63,-292.3 88.67,-290.37 84.14,-289.31\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.14,-285.8 73.87,-288.39 83.52,-292.77 84.14,-285.8\"/>\n", + "<text text-anchor=\"middle\" x=\"106.13\" y=\"-291.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->11 -->\n", - "<g id=\"edge340\" class=\"edge\"><title>12->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M38.7008,-313.173C33.3979,-333.522 27.8771,-366.871 25.7032,-390.71\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"22.1958,-390.684 24.9527,-400.914 29.1769,-391.197 22.1958,-390.684\"/>\n", - "<text text-anchor=\"middle\" x=\"18.202\" y=\"-345.741\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge170\" class=\"edge\">\n", + "<title>12->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M38.7,-313.17C33.4,-333.52 27.88,-366.87 25.7,-390.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"22.2,-390.68 24.95,-400.91 29.18,-391.2 22.2,-390.68\"/>\n", + "<text text-anchor=\"middle\" x=\"17.7\" y=\"-355.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->10 -->\n", - "<g id=\"edge342\" class=\"edge\"><title>12->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M42.8915,-313.36C39.1433,-356.155 38.8937,-463.316 42.1428,-514.683\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"38.6595,-515.041 42.8892,-524.754 45.6404,-514.523 38.6595,-515.041\"/>\n", - "<text text-anchor=\"middle\" x=\"29.5171\" y=\"-409.822\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge171\" class=\"edge\">\n", + "<title>12->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M42.89,-313.36C39.14,-356.16 38.89,-463.32 42.14,-514.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"38.66,-515.04 42.89,-524.75 45.64,-514.52 38.66,-515.04\"/>\n", + "<text text-anchor=\"middle\" x=\"57.02\" y=\"-402.82\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->9 -->\n", - "<g id=\"edge344\" class=\"edge\"><title>12->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.3255,-313.214C50.957,-371.614 79.8228,-555.476 95.1741,-626.464\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"91.8161,-627.485 97.4263,-636.472 98.6453,-625.948 91.8161,-627.485\"/>\n", - "<text text-anchor=\"middle\" x=\"56.7498\" y=\"-467.639\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge172\" class=\"edge\">\n", + "<title>12->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.33,-313.21C50.96,-371.61 79.82,-555.48 95.17,-626.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"91.82,-627.48 97.43,-636.47 98.65,-625.95 91.82,-627.48\"/>\n", + "<text text-anchor=\"middle\" x=\"56.25\" y=\"-473.64\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->8 -->\n", - "<g id=\"edge346\" class=\"edge\"><title>12->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M49.5763,-313.306C66.9277,-382.905 147.824,-632.628 179.731,-716.136\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.478,-717.428 183.372,-725.473 183,-714.885 176.478,-717.428\"/>\n", - "<text text-anchor=\"middle\" x=\"128.654\" y=\"-506.521\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge173\" class=\"edge\">\n", + "<title>12->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M49.58,-313.31C66.93,-382.9 147.82,-632.63 179.73,-716.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"176.48,-717.43 183.37,-725.47 183,-714.88 176.48,-717.43\"/>\n", + "<text text-anchor=\"middle\" x=\"100.15\" y=\"-518.52\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->7 -->\n", - "<g id=\"edge348\" class=\"edge\"><title>12->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.8539,-313.142C85.6029,-388.968 234.753,-682.213 286.544,-773.351\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"283.645,-775.33 291.668,-782.249 289.711,-771.837 283.645,-775.33\"/>\n", - "<text text-anchor=\"middle\" x=\"183.699\" y=\"-532.047\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge174\" class=\"edge\">\n", + "<title>12->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.85,-313.14C85.6,-388.97 234.75,-682.21 286.54,-773.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"283.64,-775.33 291.67,-782.25 289.71,-771.84 283.64,-775.33\"/>\n", + "<text text-anchor=\"middle\" x=\"155.2\" y=\"-547.05\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->6 -->\n", - "<g id=\"edge350\" class=\"edge\"><title>12->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M56.5979,-313.222C106.929,-391.573 331.677,-701.304 404.976,-793.9\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"402.412,-796.297 411.389,-801.924 407.88,-791.927 402.412,-796.297\"/>\n", - "<text text-anchor=\"middle\" x=\"217.787\" y=\"-558.361\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge175\" class=\"edge\">\n", + "<title>12->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M56.6,-313.22C106.93,-391.57 331.68,-701.3 404.98,-793.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"402.41,-796.3 411.39,-801.92 407.88,-791.93 402.41,-796.3\"/>\n", + "<text text-anchor=\"middle\" x=\"216.29\" y=\"-557.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->5 -->\n", - "<g id=\"edge352\" class=\"edge\"><title>12->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.0417,-313.206C130.087,-389.758 426.622,-686.618 522.232,-775.371\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"520.084,-778.151 529.809,-782.353 524.827,-773.003 520.084,-778.151\"/>\n", - "<text text-anchor=\"middle\" x=\"280.637\" y=\"-551.088\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge176\" class=\"edge\">\n", + "<title>12->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.04,-313.21C130.09,-389.76 426.62,-686.62 522.23,-775.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"520.08,-778.15 529.81,-782.35 524.83,-773 520.08,-778.15\"/>\n", + "<text text-anchor=\"middle\" x=\"277.14\" y=\"-548.09\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->4 -->\n", - "<g id=\"edge354\" class=\"edge\"><title>12->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M67.0015,-313.286C156.351,-384.614 513.729,-644.499 628.306,-721.8\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.501,-724.804 636.757,-727.463 630.398,-718.988 626.501,-724.804\"/>\n", - "<text text-anchor=\"middle\" x=\"355.654\" y=\"-501.343\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge177\" class=\"edge\">\n", + "<title>12->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M67,-313.29C156.35,-384.61 513.73,-644.5 628.31,-721.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.5,-724.8 636.76,-727.46 630.4,-718.99 626.5,-724.8\"/>\n", + "<text text-anchor=\"middle\" x=\"333.15\" y=\"-521.34\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->3 -->\n", - "<g id=\"edge356\" class=\"edge\"><title>12->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8721,-312.239C183.436,-373.763 591.774,-581.922 716.287,-639.866\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.884,-643.073 725.43,-644.083 717.816,-636.716 714.884,-643.073\"/>\n", - "<text text-anchor=\"middle\" x=\"401.079\" y=\"-459.852\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge178\" class=\"edge\">\n", + "<title>12->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.87,-312.24C183.44,-373.76 591.77,-581.92 716.29,-639.87\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.88,-643.07 725.43,-644.08 717.82,-636.72 714.88,-643.07\"/>\n", + "<text text-anchor=\"middle\" x=\"380.58\" y=\"-479.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->2 -->\n", - "<g id=\"edge358\" class=\"edge\"><title>12->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8352,-306.867C189.463,-349.925 640.133,-496.47 772.666,-534.27\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.791,-537.66 782.365,-536.999 773.687,-530.921 771.791,-537.66\"/>\n", - "<text text-anchor=\"middle\" x=\"427.251\" y=\"-404.369\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge179\" class=\"edge\">\n", + "<title>12->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.84,-306.87C189.46,-349.93 640.13,-496.47 772.67,-534.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"771.79,-537.66 782.37,-537 773.69,-530.92 771.79,-537.66\"/>\n", + "<text text-anchor=\"middle\" x=\"437.75\" y=\"-424.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 12->1 -->\n", - "<g id=\"edge360\" class=\"edge\"><title>12->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8774,-293.645C183.194,-281.515 590.059,-217.227 715.49,-192.484\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.274,-195.897 725.388,-190.494 714.894,-189.034 716.274,-195.897\"/>\n", - "<text text-anchor=\"middle\" x=\"393.683\" y=\"-227.865\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge180\" class=\"edge\">\n", + "<title>12->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.88,-293.65C183.19,-281.51 590.06,-217.23 715.49,-192.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.27,-195.9 725.39,-190.49 714.89,-189.03 716.27,-195.9\"/>\n", + "<text text-anchor=\"middle\" x=\"380.18\" y=\"-246.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->20 -->\n", - "<g id=\"edge362\" class=\"edge\"><title>11->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.3537,-417.443C172.26,-404.124 637.155,-330.638 772.413,-304.151\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"773.179,-307.567 782.301,-302.179 771.81,-300.703 773.179,-307.567\"/>\n", - "<text text-anchor=\"middle\" x=\"412.383\" y=\"-345.597\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge181\" class=\"edge\">\n", + "<title>11->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.35,-417.44C172.26,-404.12 637.15,-330.64 772.41,-304.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"773.18,-307.57 782.3,-302.18 771.81,-300.7 773.18,-307.57\"/>\n", + "<text text-anchor=\"middle\" x=\"427.88\" y=\"-349.6\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->19 -->\n", - "<g id=\"edge364\" class=\"edge\"><title>11->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1483,-421.721C173.773,-427.048 654.006,-427.183 791.929,-422.127\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.148,-425.621 801.999,-421.721 791.867,-418.626 792.148,-425.621\"/>\n", - "<text text-anchor=\"middle\" x=\"423.039\" y=\"-408.724\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge182\" class=\"edge\">\n", + "<title>11->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.15,-421.72C173.77,-427.05 654.01,-427.18 791.93,-422.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.15,-425.62 802,-421.72 791.87,-418.63 792.15,-425.62\"/>\n", + "<text text-anchor=\"middle\" x=\"408.54\" y=\"-425.72\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->18 -->\n", - "<g id=\"edge366\" class=\"edge\"><title>11->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0572,-408.509C155.439,-362.45 512.664,-180.631 627.789,-116.768\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"629.577,-119.778 636.599,-111.844 626.162,-113.667 629.577,-119.778\"/>\n", - "<text text-anchor=\"middle\" x=\"334.923\" y=\"-246.439\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge183\" class=\"edge\">\n", + "<title>11->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.06,-408.51C155.44,-362.45 512.66,-180.63 627.79,-116.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"629.58,-119.78 636.6,-111.84 626.16,-113.67 629.58,-119.78\"/>\n", + "<text text-anchor=\"middle\" x=\"326.42\" y=\"-266.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->17 -->\n", - "<g id=\"edge368\" class=\"edge\"><title>11->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1501,-403.189C144.251,-343.623 432.499,-134.3 523.936,-62.1704\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"526.266,-64.7897 531.912,-55.825 521.908,-59.3117 526.266,-64.7897\"/>\n", - "<text text-anchor=\"middle\" x=\"281.043\" y=\"-216.479\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge184\" class=\"edge\">\n", + "<title>11->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.15,-403.19C144.25,-343.62 432.5,-134.3 523.94,-62.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"526.27,-64.79 531.91,-55.82 521.91,-59.31 526.27,-64.79\"/>\n", + "<text text-anchor=\"middle\" x=\"274.54\" y=\"-236.48\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->16 -->\n", - "<g id=\"edge370\" class=\"edge\"><title>11->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M49.6939,-400.883C120.771,-336.425 337.894,-119.4 406.873,-43.9979\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"409.694,-46.0969 413.809,-36.3338 404.504,-41.3998 409.694,-46.0969\"/>\n", - "<text text-anchor=\"middle\" x=\"239.284\" y=\"-229.241\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge185\" class=\"edge\">\n", + "<title>11->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M49.69,-400.88C120.77,-336.43 337.89,-119.4 406.87,-44\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"409.69,-46.1 413.81,-36.33 404.5,-41.4 409.69,-46.1\"/>\n", + "<text text-anchor=\"middle\" x=\"242.78\" y=\"-226.24\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->15 -->\n", - "<g id=\"edge372\" class=\"edge\"><title>11->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M44.1187,-400.995C94.5014,-339.45 240.806,-138.269 288.814,-64.7726\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"291.95,-66.367 294.419,-56.0639 286.064,-62.5784 291.95,-66.367\"/>\n", - "<text text-anchor=\"middle\" x=\"153.466\" y=\"-219.684\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge186\" class=\"edge\">\n", + "<title>11->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M44.12,-401C94.5,-339.45 240.81,-138.27 288.81,-64.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"291.95,-66.37 294.42,-56.06 286.06,-62.58 291.95,-66.37\"/>\n", + "<text text-anchor=\"middle\" x=\"180.97\" y=\"-236.68\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->14 -->\n", - "<g id=\"edge374\" class=\"edge\"><title>11->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M40.1669,-400.828C72.5046,-346.728 153.965,-187.168 182.526,-122.377\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"185.899,-123.392 186.64,-112.823 179.47,-120.624 185.899,-123.392\"/>\n", - "<text text-anchor=\"middle\" x=\"97.3463\" y=\"-250.403\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge187\" class=\"edge\">\n", + "<title>11->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M40.17,-400.83C72.5,-346.73 153.96,-187.17 182.53,-122.38\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"185.9,-123.39 186.64,-112.82 179.47,-120.62 185.9,-123.39\"/>\n", + "<text text-anchor=\"middle\" x=\"125.85\" y=\"-265.4\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->13 -->\n", - "<g id=\"edge376\" class=\"edge\"><title>11->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M36.9887,-400.987C54.0494,-360.092 86.6537,-260.347 99.1843,-211.371\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.634,-211.998 101.604,-201.453 95.8335,-210.338 102.634,-211.998\"/>\n", - "<text text-anchor=\"middle\" x=\"82.0865\" y=\"-305.979\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge188\" class=\"edge\">\n", + "<title>11->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M36.99,-400.99C54.05,-360.09 86.65,-260.35 99.18,-211.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.63,-212 101.6,-201.45 95.83,-210.34 102.63,-212\"/>\n", + "<text text-anchor=\"middle\" x=\"53.59\" y=\"-309.98\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->12 -->\n", - "<g id=\"edge378\" class=\"edge\"><title>11->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M34.929,-401.031C40.2319,-380.681 45.7527,-347.333 47.9266,-323.493\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"51.434,-323.52 48.6771,-313.29 44.4529,-323.006 51.434,-323.52\"/>\n", - "<text text-anchor=\"middle\" x=\"55.4278\" y=\"-360.062\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge189\" class=\"edge\">\n", + "<title>11->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M34.93,-401.03C40.23,-380.68 45.75,-347.33 47.93,-323.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"51.43,-323.52 48.68,-313.29 44.45,-323.01 51.43,-323.52\"/>\n", + "<text text-anchor=\"middle\" x=\"26.93\" y=\"-366.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->11 -->\n", - "<g id=\"edge380\" class=\"edge\"><title>11->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-425.814C64.0239,-425.959 72,-423.711 72,-419.07 72,-416.243 69.0382,-414.303 64.5105,-413.252\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5146,-409.739 54.2408,-412.327 63.8863,-416.71 64.5146,-409.739\"/>\n", - "<text text-anchor=\"middle\" x=\"84.0533\" y=\"-414.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge190\" class=\"edge\">\n", + "<title>11->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.24,-425.81C64.02,-425.96 72,-423.71 72,-419.07 72,-416.24 69.04,-414.3 64.51,-413.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.51,-409.74 54.24,-412.33 63.89,-416.71 64.51,-409.74\"/>\n", + "<text text-anchor=\"middle\" x=\"86.5\" y=\"-415.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->10 -->\n", - "<g id=\"edge382\" class=\"edge\"><title>11->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M24.9579,-437.327C26.0359,-457.772 31.0023,-491.141 36.2904,-514.913\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"32.9163,-515.853 38.6476,-524.764 39.7241,-514.224 32.9163,-515.853\"/>\n", - "<text text-anchor=\"middle\" x=\"44.6242\" y=\"-469.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge191\" class=\"edge\">\n", + "<title>11->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M24.96,-437.33C26.04,-457.77 31,-491.14 36.29,-514.91\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"32.92,-515.85 38.65,-524.76 39.72,-514.22 32.92,-515.85\"/>\n", + "<text text-anchor=\"middle\" x=\"16.12\" y=\"-479.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->9 -->\n", - "<g id=\"edge384\" class=\"edge\"><title>11->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M28.987,-437.169C38.4034,-478.225 70.6769,-578.537 89.8081,-627.311\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"86.5767,-628.656 93.5632,-636.621 93.0686,-626.038 86.5767,-628.656\"/>\n", - "<text text-anchor=\"middle\" x=\"73.3975\" y=\"-524.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge192\" class=\"edge\">\n", + "<title>11->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M28.99,-437.17C38.4,-478.22 70.68,-578.54 89.81,-627.31\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"86.58,-628.66 93.56,-636.62 93.07,-626.04 86.58,-628.66\"/>\n", + "<text text-anchor=\"middle\" x=\"66.65\" y=\"-521.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->8 -->\n", - "<g id=\"edge386\" class=\"edge\"><title>11->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.7825,-437.523C55.6388,-492.097 137.145,-652.659 174.134,-716.732\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"171.176,-718.607 179.256,-725.461 177.214,-715.065 171.176,-718.607\"/>\n", - "<text text-anchor=\"middle\" x=\"89.4582\" y=\"-579.927\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge193\" class=\"edge\">\n", + "<title>11->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.78,-437.52C55.64,-492.1 137.14,-652.66 174.13,-716.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"171.18,-718.61 179.26,-725.46 177.21,-715.06 171.18,-718.61\"/>\n", + "<text text-anchor=\"middle\" x=\"88.96\" y=\"-580.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->7 -->\n", - "<g id=\"edge388\" class=\"edge\"><title>11->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M36.5189,-437.196C75.5625,-499.063 222.383,-701.601 280.44,-774.296\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"278.06,-776.92 287.066,-782.5 283.505,-772.521 278.06,-776.92\"/>\n", - "<text text-anchor=\"middle\" x=\"171.479\" y=\"-592.546\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge194\" class=\"edge\">\n", + "<title>11->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M36.52,-437.2C75.56,-499.06 222.38,-701.6 280.44,-774.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"278.06,-776.92 287.07,-782.5 283.51,-772.52 278.06,-776.92\"/>\n", + "<text text-anchor=\"middle\" x=\"143.98\" y=\"-609.55\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->6 -->\n", - "<g id=\"edge390\" class=\"edge\"><title>11->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M41.1872,-437.322C99.0042,-502.062 316.692,-720.116 397.609,-794.841\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"395.712,-797.849 405.45,-802.021 400.439,-792.686 395.712,-797.849\"/>\n", - "<text text-anchor=\"middle\" x=\"230.398\" y=\"-600.881\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge195\" class=\"edge\">\n", + "<title>11->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M41.19,-437.32C99,-502.06 316.69,-720.12 397.61,-794.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"395.71,-797.85 405.45,-802.02 400.44,-792.69 395.71,-797.85\"/>\n", + "<text text-anchor=\"middle\" x=\"204.9\" y=\"-619.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->5 -->\n", - "<g id=\"edge392\" class=\"edge\"><title>11->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.8589,-437.075C125.429,-500.247 414.747,-710.706 516.426,-779.007\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.567,-781.974 524.829,-784.61 518.451,-776.15 514.567,-781.974\"/>\n", - "<text text-anchor=\"middle\" x=\"273.643\" y=\"-615.841\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge196\" class=\"edge\">\n", + "<title>11->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.86,-437.08C125.43,-500.25 414.75,-710.71 516.43,-779.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.57,-781.97 524.83,-784.61 518.45,-776.15 514.57,-781.97\"/>\n", + "<text text-anchor=\"middle\" x=\"267.14\" y=\"-611.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->4 -->\n", - "<g id=\"edge394\" class=\"edge\"><title>11->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2322,-436.327C155.707,-493.516 511.73,-675.025 627.303,-728.639\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"625.921,-731.855 636.469,-732.851 628.845,-725.495 625.921,-731.855\"/>\n", - "<text text-anchor=\"middle\" x=\"346.768\" y=\"-566.283\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge197\" class=\"edge\">\n", + "<title>11->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.23,-436.33C155.71,-493.52 511.73,-675.02 627.3,-728.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"625.92,-731.86 636.47,-732.85 628.84,-725.5 625.92,-731.86\"/>\n", + "<text text-anchor=\"middle\" x=\"326.27\" y=\"-586.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->3 -->\n", - "<g id=\"edge396\" class=\"edge\"><title>11->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1282,-430.843C165.502,-472.43 587.665,-609.716 715.59,-646.117\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.75,-649.517 725.324,-648.849 716.641,-642.777 714.75,-649.517\"/>\n", - "<text text-anchor=\"middle\" x=\"388.859\" y=\"-522.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge198\" class=\"edge\">\n", + "<title>11->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.13,-430.84C165.5,-472.43 587.67,-609.72 715.59,-646.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"714.75,-649.52 725.32,-648.85 716.64,-642.78 714.75,-649.52\"/>\n", + "<text text-anchor=\"middle\" x=\"370.36\" y=\"-542.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->2 -->\n", - "<g id=\"edge398\" class=\"edge\"><title>11->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.4257,-426.16C172.359,-450.163 636.472,-523.795 772.102,-540.201\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.046,-543.718 782.385,-541.406 772.861,-536.766 772.046,-543.718\"/>\n", - "<text text-anchor=\"middle\" x=\"414.264\" y=\"-467.981\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge199\" class=\"edge\">\n", + "<title>11->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.43,-426.16C172.36,-450.16 636.47,-523.8 772.1,-540.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.05,-543.72 782.39,-541.41 772.86,-536.77 772.05,-543.72\"/>\n", + "<text text-anchor=\"middle\" x=\"398.76\" y=\"-471.98\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 11->1 -->\n", - "<g id=\"edge400\" class=\"edge\"><title>11->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0955,-413.14C165.4,-382.428 587.503,-245.452 715.522,-198.748\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"717.092,-201.9 725.263,-195.156 714.67,-195.332 717.092,-201.9\"/>\n", - "<text text-anchor=\"middle\" x=\"381.809\" y=\"-289.744\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge200\" class=\"edge\">\n", + "<title>11->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.1,-413.14C165.4,-382.43 587.5,-245.45 715.52,-198.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"717.09,-201.9 725.26,-195.16 714.67,-195.33 717.09,-201.9\"/>\n", + "<text text-anchor=\"middle\" x=\"370.31\" y=\"-294.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->20 -->\n", - "<g id=\"edge402\" class=\"edge\"><title>10->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.7153,-537.016C189.103,-505.068 639.709,-358.827 772.499,-310.475\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"774.042,-313.637 782.219,-306.899 771.625,-307.067 774.042,-313.637\"/>\n", - "<text text-anchor=\"middle\" x=\"420.107\" y=\"-407.546\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge201\" class=\"edge\">\n", + "<title>10->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.72,-537.02C189.1,-505.07 639.71,-358.83 772.5,-310.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"774.04,-313.64 782.22,-306.9 771.63,-307.07 774.04,-313.64\"/>\n", + "<text text-anchor=\"middle\" x=\"437.61\" y=\"-427.55\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->19 -->\n", - "<g id=\"edge404\" class=\"edge\"><title>10->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.9835,-541.38C191.889,-528.062 656.785,-454.576 792.043,-428.089\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.809,-431.505 801.931,-426.116 791.439,-424.64 792.809,-431.505\"/>\n", - "<text text-anchor=\"middle\" x=\"432.013\" y=\"-469.534\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge202\" class=\"edge\">\n", + "<title>10->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.98,-541.38C191.89,-528.06 656.78,-454.58 792.04,-428.09\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.81,-431.5 801.93,-426.12 791.44,-424.64 792.81,-431.5\"/>\n", + "<text text-anchor=\"middle\" x=\"447.51\" y=\"-473.53\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->18 -->\n", - "<g id=\"edge406\" class=\"edge\"><title>10->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.6756,-526.935C175.051,-459.536 531.62,-200.573 635.345,-119.156\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"637.811,-121.668 643.482,-112.719 633.468,-116.179 637.811,-121.668\"/>\n", - "<text text-anchor=\"middle\" x=\"346.51\" y=\"-306.846\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge203\" class=\"edge\">\n", + "<title>10->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.68,-526.93C175.05,-459.54 531.62,-200.57 635.34,-119.16\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"637.81,-121.67 643.48,-112.72 633.47,-116.18 637.81,-121.67\"/>\n", + "<text text-anchor=\"middle\" x=\"340.01\" y=\"-326.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->17 -->\n", - "<g id=\"edge408\" class=\"edge\"><title>10->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M68.7709,-524.903C152.499,-448.425 448.542,-152.477 530.753,-63.2049\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"533.446,-65.4452 537.6,-55.6984 528.275,-60.7276 533.446,-65.4452\"/>\n", - "<text text-anchor=\"middle\" x=\"310.762\" y=\"-300.854\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge204\" class=\"edge\">\n", + "<title>10->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M68.77,-524.9C152.5,-448.43 448.54,-152.48 530.75,-63.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"533.45,-65.45 537.6,-55.7 528.27,-60.73 533.45,-65.45\"/>\n", + "<text text-anchor=\"middle\" x=\"314.26\" y=\"-282.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->16 -->\n", - "<g id=\"edge410\" class=\"edge\"><title>10->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M63.3767,-524.71C126.827,-446.181 350.841,-138.022 412.412,-44.8123\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"415.477,-46.5197 418.01,-36.2322 409.614,-42.6944 415.477,-46.5197\"/>\n", - "<text text-anchor=\"middle\" x=\"250.894\" y=\"-289.561\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge205\" class=\"edge\">\n", + "<title>10->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M63.38,-524.71C126.83,-446.18 350.84,-138.02 412.41,-44.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"415.48,-46.52 418.01,-36.23 409.61,-42.69 415.48,-46.52\"/>\n", + "<text text-anchor=\"middle\" x=\"252.39\" y=\"-288.56\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->15 -->\n", - "<g id=\"edge412\" class=\"edge\"><title>10->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M59.0732,-524.784C103.589,-448.689 252.674,-156.375 293.756,-65.0392\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"297.07,-66.1982 297.91,-55.6366 290.667,-63.3695 297.07,-66.1982\"/>\n", - "<text text-anchor=\"middle\" x=\"162.415\" y=\"-283.711\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge206\" class=\"edge\">\n", + "<title>10->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M59.07,-524.78C103.59,-448.69 252.67,-156.38 293.76,-65.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"297.07,-66.2 297.91,-55.64 290.67,-63.37 297.07,-66.2\"/>\n", + "<text text-anchor=\"middle\" x=\"190.91\" y=\"-298.71\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->14 -->\n", - "<g id=\"edge414\" class=\"edge\"><title>10->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M55.5869,-524.933C83.2751,-455.636 164.32,-206.737 186.83,-122.602\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.266,-123.297 189.389,-112.738 183.49,-121.539 190.266,-123.297\"/>\n", - "<text text-anchor=\"middle\" x=\"107.209\" y=\"-315.568\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge207\" class=\"edge\">\n", + "<title>10->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M55.59,-524.93C83.28,-455.64 164.32,-206.74 186.83,-122.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.27,-123.3 189.39,-112.74 183.49,-121.54 190.27,-123.3\"/>\n", + "<text text-anchor=\"middle\" x=\"135.71\" y=\"-327.57\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->13 -->\n", - "<g id=\"edge416\" class=\"edge\"><title>10->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.7976,-524.681C66.6453,-465.99 95.9172,-282.423 102.979,-211.594\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"106.467,-211.885 103.886,-201.61 99.4956,-211.252 106.467,-211.885\"/>\n", - "<text text-anchor=\"middle\" x=\"63.8883\" y=\"-361.938\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge208\" class=\"edge\">\n", + "<title>10->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.8,-524.68C66.65,-465.99 95.92,-282.42 102.98,-211.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"106.47,-211.89 103.89,-201.61 99.5,-211.25 106.47,-211.89\"/>\n", + "<text text-anchor=\"middle\" x=\"92.39\" y=\"-371.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->12 -->\n", - "<g id=\"edge418\" class=\"edge\"><title>10->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M50.3681,-524.781C54.1163,-481.986 54.3659,-374.825 51.1168,-323.458\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"54.6,-323.1 50.3704,-313.386 47.6192,-323.618 54.6,-323.1\"/>\n", - "<text text-anchor=\"middle\" x=\"37.7424\" y=\"-419.919\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge209\" class=\"edge\">\n", + "<title>10->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M50.37,-524.78C54.12,-481.99 54.37,-374.83 51.12,-323.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"54.6,-323.1 50.37,-313.39 47.62,-323.62 54.6,-323.1\"/>\n", + "<text text-anchor=\"middle\" x=\"65.24\" y=\"-427.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->11 -->\n", - "<g id=\"edge420\" class=\"edge\"><title>10->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M48.6718,-524.751C47.5939,-504.307 42.6275,-470.938 37.3394,-447.165\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"40.7135,-446.226 34.9822,-437.315 33.9057,-447.855 40.7135,-446.226\"/>\n", - "<text text-anchor=\"middle\" x=\"57.0056\" y=\"-479.758\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge210\" class=\"edge\">\n", + "<title>10->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M48.67,-524.75C47.59,-504.31 42.63,-470.94 37.34,-447.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"40.71,-446.23 34.98,-437.31 33.91,-447.85 40.71,-446.23\"/>\n", + "<text text-anchor=\"middle\" x=\"57.51\" y=\"-489.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->10 -->\n", - "<g id=\"edge422\" class=\"edge\"><title>10->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8706,-549.751C83.6537,-549.896 91.6298,-547.649 91.6298,-543.008 91.6298,-540.18 88.668,-538.241 84.1403,-537.19\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.1443,-533.676 73.8706,-536.265 83.5161,-540.648 84.1443,-533.676\"/>\n", - "<text text-anchor=\"middle\" x=\"103.683\" y=\"-538.808\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge211\" class=\"edge\">\n", + "<title>10->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.87,-549.75C83.65,-549.9 91.63,-547.65 91.63,-543.01 91.63,-540.18 88.67,-538.24 84.14,-537.19\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.14,-533.68 73.87,-536.26 83.52,-540.65 84.14,-533.68\"/>\n", + "<text text-anchor=\"middle\" x=\"106.13\" y=\"-539.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->9 -->\n", - "<g id=\"edge424\" class=\"edge\"><title>10->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M50.4254,-561.252C57.4316,-579.413 71.2746,-607.41 83.2036,-628.069\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.2214,-629.902 88.3454,-636.703 86.2357,-626.32 80.2214,-629.902\"/>\n", - "<text text-anchor=\"middle\" x=\"52.8145\" y=\"-596.461\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge212\" class=\"edge\">\n", + "<title>10->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M50.43,-561.25C57.43,-579.41 71.27,-607.41 83.2,-628.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.22,-629.9 88.35,-636.7 86.24,-626.32 80.22,-629.9\"/>\n", + "<text text-anchor=\"middle\" x=\"52.31\" y=\"-598.46\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->8 -->\n", - "<g id=\"edge426\" class=\"edge\"><title>10->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M55.1695,-561.359C76.9549,-597.21 134.028,-676.349 167.377,-717.555\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"164.858,-720.003 173.912,-725.505 170.266,-715.558 164.858,-720.003\"/>\n", - "<text text-anchor=\"middle\" x=\"98.2732\" y=\"-644.257\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge213\" class=\"edge\">\n", + "<title>10->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M55.17,-561.36C76.95,-597.21 134.03,-676.35 167.38,-717.56\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"164.86,-720 173.91,-725.51 170.27,-715.56 164.86,-720\"/>\n", + "<text text-anchor=\"middle\" x=\"125.77\" y=\"-628.26\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->7 -->\n", - "<g id=\"edge428\" class=\"edge\"><title>10->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M59.9107,-561.168C99.389,-606.373 216.048,-723.488 272.688,-775.315\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"270.506,-778.061 280.267,-782.18 275.205,-772.873 270.506,-778.061\"/>\n", - "<text text-anchor=\"middle\" x=\"177.299\" y=\"-653.041\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge214\" class=\"edge\">\n", + "<title>10->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M59.91,-561.17C99.39,-606.37 216.05,-723.49 272.69,-775.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"270.51,-778.06 280.27,-782.18 275.21,-772.87 270.51,-778.06\"/>\n", + "<text text-anchor=\"middle\" x=\"151.8\" y=\"-672.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->6 -->\n", - "<g id=\"edge430\" class=\"edge\"><title>10->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M66.0038,-561.187C126.685,-610.62 313.323,-746.512 392.269,-799.106\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.63,-802.218 400.903,-804.806 394.486,-796.376 390.63,-802.218\"/>\n", - "<text text-anchor=\"middle\" x=\"237.136\" y=\"-663.947\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge215\" class=\"edge\">\n", + "<title>10->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M66,-561.19C126.68,-610.62 313.32,-746.51 392.27,-799.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.63,-802.22 400.9,-804.81 394.49,-796.38 390.63,-802.22\"/>\n", + "<text text-anchor=\"middle\" x=\"214.64\" y=\"-683.95\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge432\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.7336,-560.565C158.621,-608.811 419.237,-741.71 515.664,-786.067\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.453,-789.361 525.004,-790.317 517.352,-782.989 514.453,-789.361\"/>\n", - "<text text-anchor=\"middle\" x=\"300.699\" y=\"-657.116\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge216\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.73,-560.56C158.62,-608.81 419.24,-741.71 515.66,-786.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.45,-789.36 525,-790.32 517.35,-782.99 514.45,-789.36\"/>\n", + "<text text-anchor=\"middle\" x=\"280.2\" y=\"-677.12\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->4 -->\n", - "<g id=\"edge434\" class=\"edge\"><title>10->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8158,-555.029C172.711,-592.249 513.361,-703.056 626.768,-735.062\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.138,-738.52 636.71,-737.825 628.012,-731.775 626.138,-738.52\"/>\n", - "<text text-anchor=\"middle\" x=\"346.292\" y=\"-652.846\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge217\" class=\"edge\">\n", + "<title>10->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.82,-555.03C172.71,-592.25 513.36,-703.06 626.77,-735.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.14,-738.52 636.71,-737.82 628.01,-731.78 626.14,-738.52\"/>\n", + "<text text-anchor=\"middle\" x=\"335.79\" y=\"-648.85\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->3 -->\n", - "<g id=\"edge436\" class=\"edge\"><title>10->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8592,-550.19C183.037,-572.634 589.223,-637.099 715.105,-652.148\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.047,-655.665 725.383,-653.336 715.851,-648.711 715.047,-655.665\"/>\n", - "<text text-anchor=\"middle\" x=\"395.482\" y=\"-585.969\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge218\" class=\"edge\">\n", + "<title>10->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.86,-550.19C183.04,-572.63 589.22,-637.1 715.1,-652.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.05,-655.66 725.38,-653.34 715.85,-648.71 715.05,-655.66\"/>\n", + "<text text-anchor=\"middle\" x=\"379.98\" y=\"-604.97\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->2 -->\n", - "<g id=\"edge438\" class=\"edge\"><title>10->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.7811,-545.72C189.17,-550.961 639.021,-551.1 772.179,-546.138\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.44,-549.63 782.288,-545.723 772.153,-542.636 772.44,-549.63\"/>\n", - "<text text-anchor=\"middle\" x=\"422.98\" y=\"-532.729\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge219\" class=\"edge\">\n", + "<title>10->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.78,-545.72C189.17,-550.96 639.02,-551.1 772.18,-546.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"772.44,-549.63 782.29,-545.72 772.15,-542.64 772.44,-549.63\"/>\n", + "<text text-anchor=\"middle\" x=\"408.48\" y=\"-549.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 10->1 -->\n", - "<g id=\"edge440\" class=\"edge\"><title>10->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.8406,-532.233C183.444,-482.18 592.405,-273.987 716.58,-205.291\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"718.326,-208.325 725.358,-200.401 714.919,-202.21 718.326,-208.325\"/>\n", - "<text text-anchor=\"middle\" x=\"389.21\" y=\"-352.562\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge220\" class=\"edge\">\n", + "<title>10->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M73.84,-532.23C183.44,-482.18 592.4,-273.99 716.58,-205.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"718.33,-208.33 725.36,-200.4 714.92,-202.21 718.33,-208.33\"/>\n", + "<text text-anchor=\"middle\" x=\"380.71\" y=\"-357.56\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->20 -->\n", - "<g id=\"edge442\" class=\"edge\"><title>9->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.808,-644.039C240.411,-593.985 649.372,-385.793 773.548,-317.097\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.294,-320.131 782.326,-312.207 771.887,-314.016 775.294,-320.131\"/>\n", - "<text text-anchor=\"middle\" x=\"446.178\" y=\"-464.368\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge221\" class=\"edge\">\n", + "<title>9->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.81,-644.04C240.41,-593.99 649.37,-385.79 773.55,-317.1\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.29,-320.13 782.33,-312.21 771.89,-314.02 775.29,-320.13\"/>\n", + "<text text-anchor=\"middle\" x=\"466.68\" y=\"-484.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->19 -->\n", - "<g id=\"edge444\" class=\"edge\"><title>9->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.693,-648.883C241.997,-618.172 664.101,-481.195 792.119,-434.492\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"793.689,-437.643 801.861,-430.9 791.268,-431.075 793.689,-437.643\"/>\n", - "<text text-anchor=\"middle\" x=\"458.406\" y=\"-525.487\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge222\" class=\"edge\">\n", + "<title>9->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.69,-648.88C242,-618.17 664.1,-481.2 792.12,-434.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"793.69,-437.64 801.86,-430.9 791.27,-431.08 793.69,-437.64\"/>\n", + "<text text-anchor=\"middle\" x=\"446.91\" y=\"-545.49\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->18 -->\n", - "<g id=\"edge446\" class=\"edge\"><title>9->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.454,-636.793C215.092,-554.667 553.331,-216.529 642.311,-120.238\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"645.04,-122.44 649.213,-112.701 639.878,-117.712 645.04,-122.44\"/>\n", - "<text text-anchor=\"middle\" x=\"372.882\" y=\"-363.315\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge223\" class=\"edge\">\n", + "<title>9->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.45,-636.79C215.09,-554.67 553.33,-216.53 642.31,-120.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"645.04,-122.44 649.21,-112.7 639.88,-117.71 645.04,-122.44\"/>\n", + "<text text-anchor=\"middle\" x=\"398.38\" y=\"-382.32\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->17 -->\n", - "<g id=\"edge448\" class=\"edge\"><title>9->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M120.104,-636.5C190.863,-548.383 466.896,-168.617 536.228,-64.2339\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"539.188,-66.1024 541.754,-55.8227 533.338,-62.2591 539.188,-66.1024\"/>\n", - "<text text-anchor=\"middle\" x=\"315.166\" y=\"-337.167\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge224\" class=\"edge\">\n", + "<title>9->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M120.1,-636.5C190.86,-548.38 466.9,-168.62 536.23,-64.23\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"539.19,-66.1 541.75,-55.82 533.34,-62.26 539.19,-66.1\"/>\n", + "<text text-anchor=\"middle\" x=\"342.67\" y=\"-354.17\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->16 -->\n", - "<g id=\"edge450\" class=\"edge\"><title>9->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M115.737,-636.554C167.608,-546.88 368.211,-153.444 417.32,-45.4734\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"420.574,-46.7711 421.467,-36.214 414.185,-43.9097 420.574,-46.7711\"/>\n", - "<text text-anchor=\"middle\" x=\"280.528\" y=\"-343.814\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge225\" class=\"edge\">\n", + "<title>9->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M115.74,-636.55C167.61,-546.88 368.21,-153.44 417.32,-45.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"420.57,-46.77 421.47,-36.21 414.19,-43.91 420.57,-46.77\"/>\n", + "<text text-anchor=\"middle\" x=\"281.03\" y=\"-344.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->15 -->\n", - "<g id=\"edge452\" class=\"edge\"><title>9->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M112.112,-636.786C146.193,-549.619 269.091,-171.862 298.191,-65.5525\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"301.581,-66.4204 300.779,-55.856 294.818,-64.6151 301.581,-66.4204\"/>\n", - "<text text-anchor=\"middle\" x=\"191.151\" y=\"-342.969\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge226\" class=\"edge\">\n", + "<title>9->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M112.11,-636.79C146.19,-549.62 269.09,-171.86 298.19,-65.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"301.58,-66.42 300.78,-55.86 294.82,-64.62 301.58,-66.42\"/>\n", + "<text text-anchor=\"middle\" x=\"219.65\" y=\"-354.97\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->14 -->\n", - "<g id=\"edge454\" class=\"edge\"><title>9->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M109.148,-636.586C127.45,-554.977 180.23,-222.865 191.014,-123.081\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"194.523,-123.165 192.046,-112.864 187.559,-122.461 194.523,-123.165\"/>\n", - "<text text-anchor=\"middle\" x=\"164.081\" y=\"-377.633\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge227\" class=\"edge\">\n", + "<title>9->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M109.15,-636.59C127.45,-554.98 180.23,-222.86 191.01,-123.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"194.52,-123.16 192.05,-112.86 187.56,-122.46 194.52,-123.16\"/>\n", + "<text text-anchor=\"middle\" x=\"164.58\" y=\"-383.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->13 -->\n", - "<g id=\"edge456\" class=\"edge\"><title>9->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.411,-636.62C111.451,-564.569 111.652,-298.918 107.013,-211.454\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.506,-211.237 106.407,-201.467 103.519,-211.66 110.506,-211.237\"/>\n", - "<text text-anchor=\"middle\" x=\"93.712\" y=\"-419.837\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge228\" class=\"edge\">\n", + "<title>9->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.41,-636.62C111.45,-564.57 111.65,-298.92 107.01,-211.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.51,-211.24 106.41,-201.47 103.52,-211.66 110.51,-211.24\"/>\n", + "<text text-anchor=\"middle\" x=\"121.21\" y=\"-427.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->12 -->\n", - "<g id=\"edge458\" class=\"edge\"><title>9->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.902,-636.733C99.2704,-578.333 70.4046,-394.47 55.0533,-323.482\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"58.4113,-322.462 52.8011,-313.475 51.5821,-323.999 58.4113,-322.462\"/>\n", - "<text text-anchor=\"middle\" x=\"65.4776\" y=\"-477.908\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge229\" class=\"edge\">\n", + "<title>9->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.9,-636.73C99.27,-578.33 70.4,-394.47 55.05,-323.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"58.41,-322.46 52.8,-313.47 51.58,-324 58.41,-322.46\"/>\n", + "<text text-anchor=\"middle\" x=\"93.98\" y=\"-483.91\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->11 -->\n", - "<g id=\"edge460\" class=\"edge\"><title>9->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M101.611,-636.715C92.1943,-595.66 59.9207,-495.347 40.7896,-446.574\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"44.0209,-445.228 37.0344,-437.263 37.529,-447.847 44.0209,-445.228\"/>\n", - "<text text-anchor=\"middle\" x=\"57.2001\" y=\"-541.445\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge230\" class=\"edge\">\n", + "<title>9->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M101.61,-636.72C92.19,-595.66 59.92,-495.35 40.79,-446.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"44.02,-445.23 37.03,-437.26 37.53,-447.85 44.02,-445.23\"/>\n", + "<text text-anchor=\"middle\" x=\"85.7\" y=\"-545.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->10 -->\n", - "<g id=\"edge462\" class=\"edge\"><title>9->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99.802,-636.57C92.7958,-618.409 78.9528,-590.411 67.0238,-569.752\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"70.006,-567.92 61.882,-561.119 63.9917,-571.501 70.006,-567.92\"/>\n", - "<text text-anchor=\"middle\" x=\"69.4129\" y=\"-604.961\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge231\" class=\"edge\">\n", + "<title>9->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99.8,-636.57C92.8,-618.41 78.95,-590.41 67.02,-569.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"70.01,-567.92 61.88,-561.12 63.99,-571.5 70.01,-567.92\"/>\n", + "<text text-anchor=\"middle\" x=\"97.91\" y=\"-606.96\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->9 -->\n", - "<g id=\"edge464\" class=\"edge\"><title>9->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.838,-661.557C140.622,-661.702 148.598,-659.454 148.598,-654.814 148.598,-651.986 145.636,-650.047 141.108,-648.996\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.112,-645.482 130.838,-648.07 140.484,-652.454 141.112,-645.482\"/>\n", - "<text text-anchor=\"middle\" x=\"160.651\" y=\"-650.614\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge232\" class=\"edge\">\n", + "<title>9->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.84,-661.56C140.62,-661.7 148.6,-659.45 148.6,-654.81 148.6,-651.99 145.64,-650.05 141.11,-649\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.11,-645.48 130.84,-648.07 140.48,-652.45 141.11,-645.48\"/>\n", + "<text text-anchor=\"middle\" x=\"163.1\" y=\"-651.11\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->8 -->\n", - "<g id=\"edge466\" class=\"edge\"><title>9->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M114.596,-673.119C125.596,-686.315 142.859,-704.159 158.36,-718.625\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"156.05,-721.255 165.792,-725.42 160.773,-716.089 156.05,-721.255\"/>\n", - "<text text-anchor=\"middle\" x=\"125.478\" y=\"-702.672\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge233\" class=\"edge\">\n", + "<title>9->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M114.6,-673.12C125.6,-686.31 142.86,-704.16 158.36,-718.62\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"156.05,-721.26 165.79,-725.42 160.77,-716.09 156.05,-721.26\"/>\n", + "<text text-anchor=\"middle\" x=\"121.98\" y=\"-699.67\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->7 -->\n", - "<g id=\"edge468\" class=\"edge\"><title>9->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M121.417,-673.045C154.411,-700.702 225.334,-752.585 268.502,-780.974\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"266.713,-783.985 277.007,-786.491 270.522,-778.113 266.713,-783.985\"/>\n", - "<text text-anchor=\"middle\" x=\"186.959\" y=\"-734.809\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge234\" class=\"edge\">\n", + "<title>9->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M121.42,-673.04C154.41,-700.7 225.33,-752.59 268.5,-780.97\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"266.71,-783.99 277.01,-786.49 270.52,-778.11 266.71,-783.99\"/>\n", + "<text text-anchor=\"middle\" x=\"209.46\" y=\"-715.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->6 -->\n", - "<g id=\"edge470\" class=\"edge\"><title>9->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.278,-672.932C188.231,-706.402 325.562,-776.499 391.515,-806.412\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.153,-809.636 400.71,-810.524 393.011,-803.246 390.153,-809.636\"/>\n", - "<text text-anchor=\"middle\" x=\"254.897\" y=\"-747.472\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge235\" class=\"edge\">\n", + "<title>9->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.28,-672.93C188.23,-706.4 325.56,-776.5 391.52,-806.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.15,-809.64 400.71,-810.52 393.01,-803.25 390.15,-809.64\"/>\n", + "<text text-anchor=\"middle\" x=\"275.4\" y=\"-728.47\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->5 -->\n", - "<g id=\"edge472\" class=\"edge\"><title>9->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.905,-667.372C208.032,-696.852 427.517,-768.293 515.188,-792.61\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.396,-796.021 524.964,-795.271 516.235,-789.267 514.396,-796.021\"/>\n", - "<text text-anchor=\"middle\" x=\"327.046\" y=\"-713.791\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge236\" class=\"edge\">\n", + "<title>9->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.9,-667.37C208.03,-696.85 427.52,-768.29 515.19,-792.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.4,-796.02 524.96,-795.27 516.23,-789.27 514.4,-796.02\"/>\n", + "<text text-anchor=\"middle\" x=\"308.55\" y=\"-733.79\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->4 -->\n", - "<g id=\"edge474\" class=\"edge\"><title>9->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.886,-662.323C222.795,-681.6 521.159,-728.994 626.538,-741.242\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.369,-744.744 636.696,-742.377 627.146,-737.788 626.369,-744.744\"/>\n", - "<text text-anchor=\"middle\" x=\"379.712\" y=\"-686.583\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge237\" class=\"edge\">\n", + "<title>9->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.89,-662.32C222.79,-681.6 521.16,-728.99 626.54,-741.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.37,-744.74 636.7,-742.38 627.15,-737.79 626.37,-744.74\"/>\n", + "<text text-anchor=\"middle\" x=\"364.21\" y=\"-705.58\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->3 -->\n", - "<g id=\"edge476\" class=\"edge\"><title>9->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.656,-657.727C233.11,-662.691 597.393,-662.838 715.374,-658.169\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.532,-661.665 725.37,-657.733 715.227,-654.672 715.532,-661.665\"/>\n", - "<text text-anchor=\"middle\" x=\"423.015\" y=\"-644.748\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge238\" class=\"edge\">\n", + "<title>9->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.66,-657.73C233.11,-662.69 597.39,-662.84 715.37,-658.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"715.53,-661.67 725.37,-657.73 715.23,-654.67 715.53,-661.67\"/>\n", + "<text text-anchor=\"middle\" x=\"408.52\" y=\"-661.75\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->2 -->\n", - "<g id=\"edge478\" class=\"edge\"><title>9->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.845,-653.326C240.162,-641.195 647.027,-576.908 772.457,-552.165\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"773.242,-555.578 782.356,-550.174 771.862,-548.715 773.242,-555.578\"/>\n", - "<text text-anchor=\"middle\" x=\"452.651\" y=\"-609.546\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge239\" class=\"edge\">\n", + "<title>9->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.85,-653.33C240.16,-641.2 647.03,-576.91 772.46,-552.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"773.24,-555.58 782.36,-550.17 771.86,-548.72 773.24,-555.58\"/>\n", + "<text text-anchor=\"middle\" x=\"437.15\" y=\"-606.55\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 9->1 -->\n", - "<g id=\"edge480\" class=\"edge\"><title>9->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.703,-638.623C235.941,-568.522 616.571,-292.072 724.104,-207.775\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"726.551,-210.302 732.228,-201.357 722.211,-204.809 726.551,-210.302\"/>\n", - "<text text-anchor=\"middle\" x=\"419.403\" y=\"-406.999\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge240\" class=\"edge\">\n", + "<title>9->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.7,-638.62C235.94,-568.52 616.57,-292.07 724.1,-207.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"726.55,-210.3 732.23,-201.36 722.21,-204.81 726.55,-210.3\"/>\n", + "<text text-anchor=\"middle\" x=\"441.9\" y=\"-412\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->20 -->\n", - "<g id=\"edge482\" class=\"edge\"><title>8->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.373,-727.47C320.748,-660.071 677.317,-401.108 781.042,-319.692\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"783.508,-322.204 789.179,-313.254 779.165,-316.714 783.508,-322.204\"/>\n", - "<text text-anchor=\"middle\" x=\"492.207\" y=\"-507.381\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge241\" class=\"edge\">\n", + "<title>8->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.37,-727.47C320.75,-660.07 677.32,-401.11 781.04,-319.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"783.51,-322.2 789.18,-313.25 779.16,-316.71 783.51,-322.2\"/>\n", + "<text text-anchor=\"middle\" x=\"514.71\" y=\"-527.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->19 -->\n", - "<g id=\"edge484\" class=\"edge\"><title>8->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.384,-732.982C320.766,-686.922 677.991,-505.104 793.116,-441.241\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"794.904,-444.251 801.926,-436.317 791.489,-438.14 794.904,-444.251\"/>\n", - "<text text-anchor=\"middle\" x=\"500.25\" y=\"-570.911\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge242\" class=\"edge\">\n", + "<title>8->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.38,-732.98C320.77,-686.92 677.99,-505.1 793.12,-441.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"794.9,-444.25 801.93,-436.32 791.49,-438.14 794.9,-444.25\"/>\n", + "<text text-anchor=\"middle\" x=\"491.75\" y=\"-590.91\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->18 -->\n", - "<g id=\"edge486\" class=\"edge\"><title>8->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M208.739,-725.252C281.818,-634.085 575.921,-229.448 647.927,-121.247\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"650.887,-123.115 653.463,-112.838 645.041,-119.266 650.887,-123.115\"/>\n", - "<text text-anchor=\"middle\" x=\"415.333\" y=\"-410.05\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge243\" class=\"edge\">\n", + "<title>8->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M208.74,-725.25C281.82,-634.09 575.92,-229.45 647.93,-121.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"650.89,-123.11 653.46,-112.84 645.04,-119.27 650.89,-123.11\"/>\n", + "<text text-anchor=\"middle\" x=\"413.83\" y=\"-427.05\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->17 -->\n", - "<g id=\"edge488\" class=\"edge\"><title>8->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M204.273,-725.385C259.603,-629.303 488.368,-180.586 541.213,-64.8849\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"544.464,-66.1895 545.376,-55.634 538.08,-63.3165 544.464,-66.1895\"/>\n", - "<text text-anchor=\"middle\" x=\"358.743\" y=\"-383.935\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge244\" class=\"edge\">\n", + "<title>8->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M204.27,-725.39C259.6,-629.3 488.37,-180.59 541.21,-64.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"544.46,-66.19 545.38,-55.63 538.08,-63.32 544.46,-66.19\"/>\n", + "<text text-anchor=\"middle\" x=\"387.24\" y=\"-398.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->16 -->\n", - "<g id=\"edge490\" class=\"edge\"><title>8->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M200.754,-725.238C238.591,-627.276 388.889,-165.157 421.876,-46.05\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"425.302,-46.7896 424.536,-36.2225 418.545,-44.9608 425.302,-46.7896\"/>\n", - "<text text-anchor=\"middle\" x=\"297.315\" y=\"-377.444\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge245\" class=\"edge\">\n", + "<title>8->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M200.75,-725.24C238.59,-627.28 388.89,-165.16 421.88,-46.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"425.3,-46.79 424.54,-36.22 418.54,-44.96 425.3,-46.79\"/>\n", + "<text text-anchor=\"middle\" x=\"325.81\" y=\"-389.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->15 -->\n", - "<g id=\"edge492\" class=\"edge\"><title>8->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M197.589,-725.394C218.533,-629.564 289.503,-182.477 302.562,-65.6287\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.044,-65.9835 303.612,-55.6715 299.082,-65.2491 306.044,-65.9835\"/>\n", - "<text text-anchor=\"middle\" x=\"236.075\" y=\"-389.311\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge246\" class=\"edge\">\n", + "<title>8->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M197.59,-725.39C218.53,-629.56 289.5,-182.48 302.56,-65.63\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"306.04,-65.98 303.61,-55.67 299.08,-65.25 306.04,-65.98\"/>\n", + "<text text-anchor=\"middle\" x=\"264.58\" y=\"-399.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->14 -->\n", - "<g id=\"edge494\" class=\"edge\"><title>8->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M194.749,-725.509C200.33,-635.37 200.514,-233.618 195.301,-122.92\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"198.792,-122.651 194.762,-112.852 191.802,-123.025 198.792,-122.651\"/>\n", - "<text text-anchor=\"middle\" x=\"182.025\" y=\"-420.015\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge247\" class=\"edge\">\n", + "<title>8->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M194.75,-725.51C200.33,-635.37 200.51,-233.62 195.3,-122.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"198.79,-122.65 194.76,-112.85 191.8,-123.02 198.79,-122.65\"/>\n", + "<text text-anchor=\"middle\" x=\"209.52\" y=\"-428.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->13 -->\n", - "<g id=\"edge496\" class=\"edge\"><title>8->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.062,-725.45C184.582,-643.949 131.998,-310.635 111.262,-211.355\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"114.657,-210.495 109.126,-201.458 107.815,-211.972 114.657,-210.495\"/>\n", - "<text text-anchor=\"middle\" x=\"137.662\" y=\"-466.203\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge248\" class=\"edge\">\n", + "<title>8->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.06,-725.45C184.58,-643.95 132,-310.64 111.26,-211.36\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"114.66,-210.49 109.13,-201.46 107.81,-211.97 114.66,-210.49\"/>\n", + "<text text-anchor=\"middle\" x=\"166.16\" y=\"-472.2\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->12 -->\n", - "<g id=\"edge498\" class=\"edge\"><title>8->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M189.381,-725.37C172.029,-655.771 91.1334,-406.048 59.2259,-322.54\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.4791,-321.248 55.5852,-313.203 55.9574,-323.792 62.4791,-321.248\"/>\n", - "<text text-anchor=\"middle\" x=\"138.303\" y=\"-515.755\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge249\" class=\"edge\">\n", + "<title>8->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M189.38,-725.37C172.03,-655.77 91.13,-406.05 59.23,-322.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.48,-321.25 55.59,-313.2 55.96,-323.79 62.48,-321.25\"/>\n", + "<text text-anchor=\"middle\" x=\"138.8\" y=\"-527.76\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->11 -->\n", - "<g id=\"edge500\" class=\"edge\"><title>8->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M186.545,-725.091C163.688,-670.516 82.1823,-509.954 45.1933,-445.882\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"48.1509,-444.006 40.0712,-437.153 42.1135,-447.549 48.1509,-444.006\"/>\n", - "<text text-anchor=\"middle\" x=\"101.869\" y=\"-588.287\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge250\" class=\"edge\">\n", + "<title>8->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M186.54,-725.09C163.69,-670.52 82.18,-509.95 45.19,-445.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"48.15,-444.01 40.07,-437.15 42.11,-447.55 48.15,-444.01\"/>\n", + "<text text-anchor=\"middle\" x=\"130.37\" y=\"-589.29\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->10 -->\n", - "<g id=\"edge502\" class=\"edge\"><title>8->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.787,-725.192C162.002,-689.342 104.929,-610.203 71.5801,-568.996\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"74.0987,-566.548 65.0445,-561.046 68.6913,-570.994 74.0987,-566.548\"/>\n", - "<text text-anchor=\"middle\" x=\"140.684\" y=\"-633.894\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge251\" class=\"edge\">\n", + "<title>8->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M183.79,-725.19C162,-689.34 104.93,-610.2 71.58,-569\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"74.1,-566.55 65.04,-561.05 68.69,-570.99 74.1,-566.55\"/>\n", + "<text text-anchor=\"middle\" x=\"142.18\" y=\"-635.89\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->9 -->\n", - "<g id=\"edge504\" class=\"edge\"><title>8->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.328,-725.238C170.329,-712.042 153.066,-694.198 137.565,-679.732\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.875,-677.102 130.133,-672.938 135.152,-682.268 139.875,-677.102\"/>\n", - "<text text-anchor=\"middle\" x=\"170.447\" y=\"-687.285\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge252\" class=\"edge\">\n", + "<title>8->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.33,-725.24C170.33,-712.04 153.07,-694.2 137.57,-679.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.87,-677.1 130.13,-672.94 135.15,-682.27 139.87,-677.1\"/>\n", + "<text text-anchor=\"middle\" x=\"173.95\" y=\"-706.29\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->8 -->\n", - "<g id=\"edge506\" class=\"edge\"><title>8->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.568,-750.287C229.351,-750.432 237.327,-748.184 237.327,-743.543 237.327,-740.715 234.365,-738.776 229.838,-737.725\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.842,-734.212 219.568,-736.8 229.213,-741.183 229.842,-734.212\"/>\n", - "<text text-anchor=\"middle\" x=\"249.38\" y=\"-739.343\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge253\" class=\"edge\">\n", + "<title>8->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.57,-750.29C229.35,-750.43 237.33,-748.18 237.33,-743.54 237.33,-740.72 234.37,-738.78 229.84,-737.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.84,-734.21 219.57,-736.8 229.21,-741.18 229.84,-734.21\"/>\n", + "<text text-anchor=\"middle\" x=\"251.83\" y=\"-739.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->7 -->\n", - "<g id=\"edge508\" class=\"edge\"><title>8->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M215.082,-761.603C230.225,-770.588 250.417,-781.057 267.756,-788.985\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"266.484,-792.25 277.045,-793.103 269.321,-785.851 266.484,-792.25\"/>\n", - "<text text-anchor=\"middle\" x=\"247.419\" y=\"-759.094\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge254\" class=\"edge\">\n", + "<title>8->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M215.08,-761.6C230.23,-770.59 250.42,-781.06 267.76,-788.99\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"266.48,-792.25 277.04,-793.1 269.32,-785.85 266.48,-792.25\"/>\n", + "<text text-anchor=\"middle\" x=\"226.92\" y=\"-779.09\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->6 -->\n", - "<g id=\"edge510\" class=\"edge\"><title>8->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.347,-757.143C261.624,-773.767 343.458,-800.498 391.141,-813.386\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.495,-816.835 401.056,-815.99 392.273,-810.065 390.495,-816.835\"/>\n", - "<text text-anchor=\"middle\" x=\"309.244\" y=\"-769.064\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge255\" class=\"edge\">\n", + "<title>8->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.35,-757.14C261.62,-773.77 343.46,-800.5 391.14,-813.39\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.5,-816.83 401.06,-815.99 392.27,-810.06 390.5,-816.83\"/>\n", + "<text text-anchor=\"middle\" x=\"319.74\" y=\"-774.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->5 -->\n", - "<g id=\"edge512\" class=\"edge\"><title>8->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.358,-751.68C282.897,-765.546 441.842,-790.882 514.594,-798.927\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.37,-802.423 524.681,-799.986 515.101,-795.461 514.37,-802.423\"/>\n", - "<text text-anchor=\"middle\" x=\"365.976\" y=\"-782.104\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge256\" class=\"edge\">\n", + "<title>8->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.36,-751.68C282.9,-765.55 441.84,-790.88 514.59,-798.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"514.37,-802.42 524.68,-799.99 515.1,-795.46 514.37,-802.42\"/>\n", + "<text text-anchor=\"middle\" x=\"352.48\" y=\"-779.1\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge514\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.37,-746.9C299.27,-751.249 534.412,-751.417 626.357,-747.406\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.768,-750.891 636.587,-746.91 626.429,-743.899 626.768,-750.891\"/>\n", - "<text text-anchor=\"middle\" x=\"422.864\" y=\"-751.953\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge257\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.37,-746.9C299.27,-751.25 534.41,-751.42 626.36,-747.41\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"626.77,-750.89 636.59,-746.91 626.43,-743.9 626.77,-750.89\"/>\n", + "<text text-anchor=\"middle\" x=\"408.36\" y=\"-750.95\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->3 -->\n", - "<g id=\"edge516\" class=\"edge\"><title>8->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.454,-742.376C311.205,-732.606 610.03,-685.449 715.375,-664.346\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.145,-667.761 725.24,-662.326 714.741,-660.903 716.145,-667.761\"/>\n", - "<text text-anchor=\"middle\" x=\"468.414\" y=\"-710.161\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge258\" class=\"edge\">\n", + "<title>8->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.45,-742.38C311.2,-732.61 610.03,-685.45 715.37,-664.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"716.15,-667.76 725.24,-662.33 714.74,-660.9 716.15,-667.76\"/>\n", + "<text text-anchor=\"middle\" x=\"452.91\" y=\"-707.16\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->2 -->\n", - "<g id=\"edge518\" class=\"edge\"><title>8->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.359,-737.844C318.09,-710.923 659.249,-600.259 772.589,-558.645\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"774.06,-561.833 782.216,-555.07 771.623,-555.271 774.06,-561.833\"/>\n", - "<text text-anchor=\"middle\" x=\"492.974\" y=\"-632.045\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge259\" class=\"edge\">\n", + "<title>8->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M219.36,-737.84C318.09,-710.92 659.25,-600.26 772.59,-558.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"774.06,-561.83 782.22,-555.07 771.62,-555.27 774.06,-561.83\"/>\n", + "<text text-anchor=\"middle\" x=\"481.47\" y=\"-652.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 8->1 -->\n", - "<g id=\"edge520\" class=\"edge\"><title>8->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M214.183,-725.523C303.821,-643.396 642.06,-305.258 731.04,-208.967\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"733.77,-211.169 737.943,-201.431 728.608,-206.441 733.77,-211.169\"/>\n", - "<text text-anchor=\"middle\" x=\"461.612\" y=\"-452.045\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge260\" class=\"edge\">\n", + "<title>8->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M214.18,-725.52C303.82,-643.4 642.06,-305.26 731.04,-208.97\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"733.77,-211.17 737.94,-201.43 728.61,-206.44 733.77,-211.17\"/>\n", + "<text text-anchor=\"middle\" x=\"487.11\" y=\"-456.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->20 -->\n", - "<g id=\"edge522\" class=\"edge\"><title>7->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M326.274,-782.406C410.002,-705.928 706.045,-409.98 788.256,-320.708\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.95,-322.948 795.103,-313.202 785.778,-318.231 790.95,-322.948\"/>\n", - "<text text-anchor=\"middle\" x=\"546.265\" y=\"-536.357\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge261\" class=\"edge\">\n", + "<title>7->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M326.27,-782.41C410,-705.93 706.05,-409.98 788.26,-320.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.95,-322.95 795.1,-313.2 785.78,-318.23 790.95,-322.95\"/>\n", + "<text text-anchor=\"middle\" x=\"571.76\" y=\"-555.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->19 -->\n", - "<g id=\"edge524\" class=\"edge\"><title>7->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.283,-784.629C421.384,-725.064 709.632,-515.74 801.069,-443.611\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"803.399,-446.23 809.045,-437.266 799.041,-440.752 803.399,-446.23\"/>\n", - "<text text-anchor=\"middle\" x=\"574.176\" y=\"-621.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge262\" class=\"edge\">\n", + "<title>7->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.28,-784.63C421.38,-725.06 709.63,-515.74 801.07,-443.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"803.4,-446.23 809.05,-437.27 799.04,-440.75 803.4,-446.23\"/>\n", + "<text text-anchor=\"middle\" x=\"551.68\" y=\"-617.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->18 -->\n", - "<g id=\"edge526\" class=\"edge\"><title>7->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.079,-782.353C371.409,-686.271 600.174,-237.554 653.018,-121.853\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"656.269,-123.157 657.182,-112.602 649.886,-120.284 656.269,-123.157\"/>\n", - "<text text-anchor=\"middle\" x=\"470.549\" y=\"-440.903\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge263\" class=\"edge\">\n", + "<title>7->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M316.08,-782.35C371.41,-686.27 600.17,-237.55 653.02,-121.85\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"656.27,-123.16 657.18,-112.6 649.89,-120.28 656.27,-123.16\"/>\n", + "<text text-anchor=\"middle\" x=\"499.05\" y=\"-440.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->17 -->\n", - "<g id=\"edge528\" class=\"edge\"><title>7->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M312.442,-782.362C351.351,-681.374 511.487,-188.978 545.753,-65.6652\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"549.177,-66.4103 548.422,-55.8424 542.422,-64.5747 549.177,-66.4103\"/>\n", - "<text text-anchor=\"middle\" x=\"443.097\" y=\"-423.814\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge264\" class=\"edge\">\n", + "<title>7->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M312.44,-782.36C351.35,-681.37 511.49,-188.98 545.75,-65.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"549.18,-66.41 548.42,-55.84 542.42,-64.57 549.18,-66.41\"/>\n", + "<text text-anchor=\"middle\" x=\"443.6\" y=\"-427.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->16 -->\n", - "<g id=\"edge530\" class=\"edge\"><title>7->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M309.298,-782.292C331.508,-679.42 412.116,-171.442 426.366,-46.0283\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"429.849,-46.3742 427.44,-36.0569 422.889,-45.6246 429.849,-46.3742\"/>\n", - "<text text-anchor=\"middle\" x=\"353.832\" y=\"-407.96\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge265\" class=\"edge\">\n", + "<title>7->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M309.3,-782.29C331.51,-679.42 412.12,-171.44 426.37,-46.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"429.85,-46.37 427.44,-36.06 422.89,-45.62 429.85,-46.37\"/>\n", + "<text text-anchor=\"middle\" x=\"382.33\" y=\"-417.96\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->15 -->\n", - "<g id=\"edge532\" class=\"edge\"><title>7->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M306.384,-782.406C312.204,-681.653 312.377,-190.17 306.905,-66.1121\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"310.389,-65.7169 306.394,-55.9044 303.398,-66.0669 310.389,-65.7169\"/>\n", - "<text text-anchor=\"middle\" x=\"293.644\" y=\"-420.059\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge266\" class=\"edge\">\n", + "<title>7->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M306.38,-782.41C312.2,-681.65 312.38,-190.17 306.9,-66.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"310.39,-65.72 306.39,-55.9 303.4,-66.07 310.39,-65.72\"/>\n", + "<text text-anchor=\"middle\" x=\"321.14\" y=\"-413.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->14 -->\n", - "<g id=\"edge534\" class=\"edge\"><title>7->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M303.6,-782.346C294.21,-686.482 223.588,-239.413 199.665,-122.586\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.053,-121.693 197.564,-112.631 196.204,-123.138 203.053,-121.693\"/>\n", - "<text text-anchor=\"middle\" x=\"265.632\" y=\"-446.266\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge267\" class=\"edge\">\n", + "<title>7->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M303.6,-782.35C294.21,-686.48 223.59,-239.41 199.66,-122.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.05,-121.69 197.56,-112.63 196.2,-123.14 203.05,-121.69\"/>\n", + "<text text-anchor=\"middle\" x=\"266.13\" y=\"-441.27\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->13 -->\n", - "<g id=\"edge536\" class=\"edge\"><title>7->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M300.777,-782.279C278.125,-694.664 155.607,-316.931 115.809,-211.02\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"118.958,-209.454 112.116,-201.365 112.42,-211.955 118.958,-209.454\"/>\n", - "<text text-anchor=\"middle\" x=\"222.293\" y=\"-488.45\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge268\" class=\"edge\">\n", + "<title>7->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M300.78,-782.28C278.12,-694.66 155.61,-316.93 115.81,-211.02\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"118.96,-209.45 112.12,-201.36 112.42,-211.96 118.96,-209.45\"/>\n", + "<text text-anchor=\"middle\" x=\"222.79\" y=\"-485.45\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->12 -->\n", - "<g id=\"edge538\" class=\"edge\"><title>7->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M297.909,-782.502C265.16,-706.676 116.01,-413.431 64.2184,-322.293\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"67.1181,-320.314 59.0951,-313.395 61.0519,-323.807 67.1181,-320.314\"/>\n", - "<text text-anchor=\"middle\" x=\"195.064\" y=\"-541.197\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge269\" class=\"edge\">\n", + "<title>7->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M297.91,-782.5C265.16,-706.68 116.01,-413.43 64.22,-322.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"67.12,-320.31 59.1,-313.39 61.05,-323.81 67.12,-320.31\"/>\n", + "<text text-anchor=\"middle\" x=\"195.56\" y=\"-541.2\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->11 -->\n", - "<g id=\"edge540\" class=\"edge\"><title>7->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M294.614,-782.385C255.57,-720.518 108.75,-517.98 50.6933,-445.285\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"53.073,-442.661 44.0664,-437.082 47.6278,-447.06 53.073,-442.661\"/>\n", - "<text text-anchor=\"middle\" x=\"159.654\" y=\"-618.635\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge270\" class=\"edge\">\n", + "<title>7->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M294.61,-782.39C255.57,-720.52 108.75,-517.98 50.69,-445.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"53.07,-442.66 44.07,-437.08 47.63,-447.06 53.07,-442.66\"/>\n", + "<text text-anchor=\"middle\" x=\"187.15\" y=\"-602.64\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->10 -->\n", - "<g id=\"edge542\" class=\"edge\"><title>7->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M290.852,-782.351C251.374,-737.147 134.715,-620.031 78.0749,-568.204\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.2567,-565.458 70.4955,-561.339 75.5574,-570.646 80.2567,-565.458\"/>\n", - "<text text-anchor=\"middle\" x=\"173.463\" y=\"-682.078\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge271\" class=\"edge\">\n", + "<title>7->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M290.85,-782.35C251.37,-737.15 134.71,-620.03 78.07,-568.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.26,-565.46 70.5,-561.34 75.56,-570.65 80.26,-565.46\"/>\n", + "<text text-anchor=\"middle\" x=\"198.96\" y=\"-664.08\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->9 -->\n", - "<g id=\"edge544\" class=\"edge\"><title>7->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.314,-782.28C253.319,-754.623 182.397,-702.739 139.229,-674.351\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.018,-671.34 130.724,-668.834 137.208,-677.212 141.018,-671.34\"/>\n", - "<text text-anchor=\"middle\" x=\"204.771\" y=\"-736.116\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge272\" class=\"edge\">\n", + "<title>7->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.31,-782.28C253.32,-754.62 182.4,-702.74 139.23,-674.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.02,-671.34 130.72,-668.83 137.21,-677.21 141.02,-671.34\"/>\n", + "<text text-anchor=\"middle\" x=\"227.27\" y=\"-717.12\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->8 -->\n", - "<g id=\"edge546\" class=\"edge\"><title>7->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M281.378,-782.451C266.235,-773.467 246.043,-762.997 228.704,-755.069\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.976,-751.804 219.415,-750.952 227.139,-758.204 229.976,-751.804\"/>\n", - "<text text-anchor=\"middle\" x=\"261.041\" y=\"-752.56\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge273\" class=\"edge\">\n", + "<title>7->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M281.38,-782.45C266.23,-773.47 246.04,-763 228.7,-755.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.98,-751.8 219.42,-750.95 227.14,-758.2 229.98,-751.8\"/>\n", + "<text text-anchor=\"middle\" x=\"240.54\" y=\"-757.56\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->7 -->\n", - "<g id=\"edge548\" class=\"edge\"><title>7->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.374,-807.255C341.157,-807.4 349.133,-805.152 349.133,-800.511 349.133,-797.683 346.171,-795.744 341.643,-794.693\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.647,-791.179 331.374,-793.768 341.019,-798.151 341.647,-791.179\"/>\n", - "<text text-anchor=\"middle\" x=\"361.186\" y=\"-796.311\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge274\" class=\"edge\">\n", + "<title>7->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.37,-807.25C341.16,-807.4 349.13,-805.15 349.13,-800.51 349.13,-797.68 346.17,-795.74 341.64,-794.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.65,-791.18 331.37,-793.77 341.02,-798.15 341.65,-791.18\"/>\n", + "<text text-anchor=\"middle\" x=\"363.63\" y=\"-796.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->6 -->\n", - "<g id=\"edge550\" class=\"edge\"><title>7->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.355,-810.655C348.772,-814.574 371.596,-818.341 390.699,-820.51\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.569,-824.015 400.871,-821.542 391.275,-817.051 390.569,-824.015\"/>\n", - "<text text-anchor=\"middle\" x=\"360.027\" y=\"-822.383\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge275\" class=\"edge\">\n", + "<title>7->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.36,-810.66C348.77,-814.57 371.6,-818.34 390.7,-820.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"390.57,-824.01 400.87,-821.54 391.28,-817.05 390.57,-824.01\"/>\n", + "<text text-anchor=\"middle\" x=\"346.53\" y=\"-819.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->5 -->\n", - "<g id=\"edge552\" class=\"edge\"><title>7->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.607,-804.944C376.207,-807.834 464.424,-808.021 514.672,-805.505\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.005,-808.992 524.789,-804.927 514.605,-802.003 515.005,-808.992\"/>\n", - "<text text-anchor=\"middle\" x=\"423.139\" y=\"-792.024\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge276\" class=\"edge\">\n", + "<title>7->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.61,-804.94C376.21,-807.83 464.42,-808.02 514.67,-805.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515,-808.99 524.79,-804.93 514.61,-802 515,-808.99\"/>\n", + "<text text-anchor=\"middle\" x=\"408.64\" y=\"-794.02\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->4 -->\n", - "<g id=\"edge554\" class=\"edge\"><title>7->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.166,-800.014C394.694,-793.798 553.587,-768.84 626.357,-753.884\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"627.386,-757.244 636.447,-751.753 625.94,-750.395 627.386,-757.244\"/>\n", - "<text text-anchor=\"middle\" x=\"477.762\" y=\"-761.749\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge277\" class=\"edge\">\n", + "<title>7->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.17,-800.01C394.69,-793.8 553.59,-768.84 626.36,-753.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"627.39,-757.24 636.45,-751.75 625.94,-750.4 627.39,-757.24\"/>\n", + "<text text-anchor=\"middle\" x=\"464.26\" y=\"-780.75\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->3 -->\n", - "<g id=\"edge556\" class=\"edge\"><title>7->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.223,-795.259C408.232,-774.753 628.413,-703.416 715.987,-670.855\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"717.383,-674.07 725.506,-667.268 714.914,-667.519 717.383,-674.07\"/>\n", - "<text text-anchor=\"middle\" x=\"526.605\" y=\"-740.857\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge278\" class=\"edge\">\n", + "<title>7->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.22,-795.26C408.23,-774.75 628.41,-703.42 715.99,-670.86\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"717.38,-674.07 725.51,-667.27 714.91,-667.52 717.38,-674.07\"/>\n", + "<text text-anchor=\"middle\" x=\"509.11\" y=\"-736.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->2 -->\n", - "<g id=\"edge558\" class=\"edge\"><title>7->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.336,-790.227C416.412,-751.985 677.295,-619.275 773.454,-565.605\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.236,-568.618 782.234,-560.663 771.803,-562.518 775.236,-568.618\"/>\n", - "<text text-anchor=\"middle\" x=\"558.395\" y=\"-685.716\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge279\" class=\"edge\">\n", + "<title>7->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M331.34,-790.23C416.41,-751.99 677.3,-619.27 773.45,-565.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.24,-568.62 782.23,-560.66 771.8,-562.52 775.24,-568.62\"/>\n", + "<text text-anchor=\"middle\" x=\"537.9\" y=\"-681.72\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 7->1 -->\n", - "<g id=\"edge560\" class=\"edge\"><title>7->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M320.639,-782.197C391.399,-694.081 667.431,-314.315 736.764,-209.931\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"739.724,-211.8 742.289,-201.52 733.873,-207.956 739.724,-211.8\"/>\n", - "<text text-anchor=\"middle\" x=\"515.701\" y=\"-482.864\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge280\" class=\"edge\">\n", + "<title>7->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M320.64,-782.2C391.4,-694.08 667.43,-314.31 736.76,-209.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"739.72,-211.8 742.29,-201.52 733.87,-207.96 739.72,-211.8\"/>\n", + "<text text-anchor=\"middle\" x=\"543.2\" y=\"-499.86\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->20 -->\n", - "<g id=\"edge562\" class=\"edge\"><title>6->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M444.817,-801.843C508.267,-723.314 732.281,-415.155 793.852,-321.945\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"796.918,-323.653 799.451,-313.365 791.055,-319.827 796.918,-323.653\"/>\n", - "<text text-anchor=\"middle\" x=\"606.335\" y=\"-548.694\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge281\" class=\"edge\">\n", + "<title>6->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M444.82,-801.84C508.27,-723.31 732.28,-415.15 793.85,-321.95\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"796.92,-323.65 799.45,-313.37 791.06,-319.83 796.92,-323.65\"/>\n", + "<text text-anchor=\"middle\" x=\"633.83\" y=\"-565.69\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->19 -->\n", - "<g id=\"edge564\" class=\"edge\"><title>6->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M450.764,-801.954C521.842,-737.496 738.965,-520.471 807.944,-445.068\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"810.765,-447.167 814.88,-437.404 805.575,-442.47 810.765,-447.167\"/>\n", - "<text text-anchor=\"middle\" x=\"618.354\" y=\"-608.311\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge282\" class=\"edge\">\n", + "<title>6->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M450.76,-801.95C521.84,-737.5 738.96,-520.47 807.94,-445.07\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"810.76,-447.17 814.88,-437.4 805.57,-442.47 810.76,-447.17\"/>\n", + "<text text-anchor=\"middle\" x=\"643.85\" y=\"-627.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->18 -->\n", - "<g id=\"edge566\" class=\"edge\"><title>6->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M436.497,-801.836C474.334,-703.874 624.633,-241.754 657.619,-122.648\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"661.045,-123.387 660.279,-112.82 654.288,-121.558 661.045,-123.387\"/>\n", - "<text text-anchor=\"middle\" x=\"533.058\" y=\"-454.042\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge283\" class=\"edge\">\n", + "<title>6->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M436.5,-801.84C474.33,-703.87 624.63,-241.75 657.62,-122.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"661.04,-123.39 660.28,-112.82 654.29,-121.56 661.04,-123.39\"/>\n", + "<text text-anchor=\"middle\" x=\"561.56\" y=\"-466.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->17 -->\n", - "<g id=\"edge568\" class=\"edge\"><title>6->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M433.235,-801.922C455.446,-699.05 536.054,-191.072 550.304,-65.6581\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"553.787,-66.004 551.378,-55.6867 546.827,-65.2544 553.787,-66.004\"/>\n", - "<text text-anchor=\"middle\" x=\"477.769\" y=\"-427.59\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge284\" class=\"edge\">\n", + "<title>6->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M433.24,-801.92C455.45,-699.05 536.05,-191.07 550.3,-65.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"553.79,-66 551.38,-55.69 546.83,-65.25 553.79,-66\"/>\n", + "<text text-anchor=\"middle\" x=\"477.27\" y=\"-422.59\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->16 -->\n", - "<g id=\"edge570\" class=\"edge\"><title>6->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M430.278,-801.88C436.164,-697.306 436.33,-174.601 430.777,-46.4151\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"434.263,-46.0487 430.277,-36.2324 427.272,-46.3921 434.263,-46.0487\"/>\n", - "<text text-anchor=\"middle\" x=\"417.528\" y=\"-419.948\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge285\" class=\"edge\">\n", + "<title>6->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M430.28,-801.88C436.16,-697.31 436.33,-174.6 430.78,-46.42\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"434.26,-46.05 430.28,-36.23 427.27,-46.39 434.26,-46.05\"/>\n", + "<text text-anchor=\"middle\" x=\"445.03\" y=\"-427.95\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->15 -->\n", - "<g id=\"edge572\" class=\"edge\"><title>6->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M427.43,-801.981C417.107,-699.269 336.836,-191.314 311.361,-65.7388\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"314.747,-64.8266 309.277,-55.7528 307.894,-66.2571 314.747,-64.8266\"/>\n", - "<text text-anchor=\"middle\" x=\"355.396\" y=\"-431.66\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge286\" class=\"edge\">\n", + "<title>6->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M427.43,-801.98C417.11,-699.27 336.84,-191.31 311.36,-65.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"314.75,-64.83 309.28,-55.75 307.89,-66.26 314.75,-64.83\"/>\n", + "<text text-anchor=\"middle\" x=\"383.9\" y=\"-437.66\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->14 -->\n", - "<g id=\"edge574\" class=\"edge\"><title>6->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M424.521,-801.863C398.754,-703.875 248.545,-240.965 204.329,-122.339\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"207.554,-120.973 200.738,-112.862 201.008,-123.453 207.554,-120.973\"/>\n", - "<text text-anchor=\"middle\" x=\"328.425\" y=\"-453.901\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge287\" class=\"edge\">\n", + "<title>6->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M424.52,-801.86C398.75,-703.88 248.54,-240.96 204.33,-122.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"207.55,-120.97 200.74,-112.86 201.01,-123.45 207.55,-120.97\"/>\n", + "<text text-anchor=\"middle\" x=\"328.92\" y=\"-465.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->13 -->\n", - "<g id=\"edge576\" class=\"edge\"><title>6->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M421.511,-802.028C382.196,-712.503 181.252,-317.672 120.723,-210.327\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"123.63,-208.36 115.634,-201.409 117.55,-211.829 123.63,-208.36\"/>\n", - "<text text-anchor=\"middle\" x=\"257.117\" y=\"-508.977\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge288\" class=\"edge\">\n", + "<title>6->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M421.51,-802.03C382.2,-712.5 181.25,-317.67 120.72,-210.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"123.63,-208.36 115.63,-201.41 117.55,-211.83 123.63,-208.36\"/>\n", + "<text text-anchor=\"middle\" x=\"285.62\" y=\"-509.98\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->12 -->\n", - "<g id=\"edge578\" class=\"edge\"><title>6->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M418.102,-802.052C367.772,-723.701 143.024,-413.97 69.7237,-321.374\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"72.2887,-318.977 63.3115,-313.35 66.8204,-323.347 72.2887,-318.977\"/>\n", - "<text text-anchor=\"middle\" x=\"230.913\" y=\"-566.513\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge289\" class=\"edge\">\n", + "<title>6->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M418.1,-802.05C367.77,-723.7 143.02,-413.97 69.72,-321.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"72.29,-318.98 63.31,-313.35 66.82,-323.35 72.29,-318.98\"/>\n", + "<text text-anchor=\"middle\" x=\"258.41\" y=\"-565.51\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->11 -->\n", - "<g id=\"edge580\" class=\"edge\"><title>6->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M413.883,-801.89C356.066,-737.15 138.378,-519.096 57.461,-444.371\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"59.3589,-441.363 49.6201,-437.191 54.6316,-446.525 59.3589,-441.363\"/>\n", - "<text text-anchor=\"middle\" x=\"224.672\" y=\"-629.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge290\" class=\"edge\">\n", + "<title>6->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M413.88,-801.89C356.07,-737.15 138.38,-519.1 57.46,-444.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"59.36,-441.36 49.62,-437.19 54.63,-446.53 59.36,-441.36\"/>\n", + "<text text-anchor=\"middle\" x=\"250.17\" y=\"-626.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->10 -->\n", - "<g id=\"edge582\" class=\"edge\"><title>6->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M408.696,-801.962C348.015,-752.528 161.377,-616.637 82.4313,-564.043\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.0707,-560.931 73.7969,-558.343 80.2141,-566.773 84.0707,-560.931\"/>\n", - "<text text-anchor=\"middle\" x=\"253.564\" y=\"-666.802\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge291\" class=\"edge\">\n", + "<title>6->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M408.7,-801.96C348.02,-752.53 161.38,-616.64 82.43,-564.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.07,-560.93 73.8,-558.34 80.21,-566.77 84.07,-560.93\"/>\n", + "<text text-anchor=\"middle\" x=\"245.56\" y=\"-671.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->9 -->\n", - "<g id=\"edge584\" class=\"edge\"><title>6->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.39,-802.023C343.437,-768.553 206.107,-698.455 140.153,-668.543\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.515,-665.318 130.958,-664.431 138.657,-671.708 141.515,-665.318\"/>\n", - "<text text-anchor=\"middle\" x=\"276.771\" y=\"-719.083\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge292\" class=\"edge\">\n", + "<title>6->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.39,-802.02C343.44,-768.55 206.11,-698.46 140.15,-668.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.52,-665.32 130.96,-664.43 138.66,-671.71 141.52,-665.32\"/>\n", + "<text text-anchor=\"middle\" x=\"256.27\" y=\"-724.08\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->8 -->\n", - "<g id=\"edge586\" class=\"edge\"><title>6->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.051,-806.541C358.773,-789.917 276.94,-763.187 229.257,-750.298\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.902,-746.849 219.341,-747.694 228.124,-753.62 229.902,-746.849\"/>\n", - "<text text-anchor=\"middle\" x=\"319.154\" y=\"-762.22\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge293\" class=\"edge\">\n", + "<title>6->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M401.05,-806.54C358.77,-789.92 276.94,-763.19 229.26,-750.3\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.9,-746.85 219.34,-747.69 228.12,-753.62 229.9,-746.85\"/>\n", + "<text text-anchor=\"middle\" x=\"300.65\" y=\"-767.22\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->7 -->\n", - "<g id=\"edge588\" class=\"edge\"><title>6->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.848,-809.997C383.432,-806.078 360.607,-802.311 341.504,-800.142\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.634,-796.637 331.332,-799.11 340.928,-803.601 341.634,-796.637\"/>\n", - "<text text-anchor=\"middle\" x=\"372.176\" y=\"-789.869\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge294\" class=\"edge\">\n", + "<title>6->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M400.85,-810C383.43,-806.08 360.61,-802.31 341.5,-800.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.63,-796.64 331.33,-799.11 340.93,-803.6 341.63,-796.64\"/>\n", + "<text text-anchor=\"middle\" x=\"385.68\" y=\"-808.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->6 -->\n", - "<g id=\"edge590\" class=\"edge\"><title>6->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.311,-826.884C465.094,-827.029 473.07,-824.782 473.07,-820.141 473.07,-817.313 470.109,-815.374 465.581,-814.323\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.585,-810.809 455.311,-813.398 464.957,-817.781 465.585,-810.809\"/>\n", - "<text text-anchor=\"middle\" x=\"485.124\" y=\"-815.941\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge295\" class=\"edge\">\n", + "<title>6->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.31,-826.88C465.09,-827.03 473.07,-824.78 473.07,-820.14 473.07,-817.31 470.11,-815.37 465.58,-814.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.59,-810.81 455.31,-813.4 464.96,-817.78 465.59,-810.81\"/>\n", + "<text text-anchor=\"middle\" x=\"487.57\" y=\"-816.44\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->5 -->\n", - "<g id=\"edge592\" class=\"edge\"><title>6->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.236,-821.545C472.774,-820.008 495.814,-816.576 515.013,-812.727\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.884,-816.121 524.939,-810.621 514.43,-809.273 515.884,-816.121\"/>\n", - "<text text-anchor=\"middle\" x=\"484.125\" y=\"-802.936\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge296\" class=\"edge\">\n", + "<title>6->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.24,-821.54C472.77,-820.01 495.81,-816.58 515.01,-812.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"515.88,-816.12 524.94,-810.62 514.43,-809.27 515.88,-816.12\"/>\n", + "<text text-anchor=\"middle\" x=\"470.62\" y=\"-805.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->4 -->\n", - "<g id=\"edge594\" class=\"edge\"><title>6->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.108,-815.984C497.437,-805.24 579.386,-778.872 627.04,-760.895\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"628.584,-764.051 636.661,-757.195 626.071,-757.518 628.584,-764.051\"/>\n", - "<text text-anchor=\"middle\" x=\"544.074\" y=\"-796.24\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge297\" class=\"edge\">\n", + "<title>6->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.11,-815.98C497.44,-805.24 579.39,-778.87 627.04,-760.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"628.58,-764.05 636.66,-757.2 626.07,-757.52 628.58,-764.05\"/>\n", + "<text text-anchor=\"middle\" x=\"526.57\" y=\"-777.24\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge596\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.276,-810.592C513.86,-784.828 651.788,-714.798 717.101,-677.931\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"718.868,-680.952 725.819,-672.956 715.399,-674.872 718.868,-680.952\"/>\n", - "<text text-anchor=\"middle\" x=\"592.189\" y=\"-752.061\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge298\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.28,-810.59C513.86,-784.83 651.79,-714.8 717.1,-677.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"718.87,-680.95 725.82,-672.96 715.4,-674.87 718.87,-680.95\"/>\n", + "<text text-anchor=\"middle\" x=\"571.69\" y=\"-748.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->2 -->\n", - "<g id=\"edge598\" class=\"edge\"><title>6->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.19,-804.837C525.327,-759.027 711.851,-623.618 782.199,-567.577\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"784.591,-570.144 790.186,-561.147 780.202,-564.691 784.591,-570.144\"/>\n", - "<text text-anchor=\"middle\" x=\"610.695\" y=\"-670.007\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge299\" class=\"edge\">\n", + "<title>6->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M455.19,-804.84C525.33,-759.03 711.85,-623.62 782.2,-567.58\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"784.59,-570.14 790.19,-561.15 780.2,-564.69 784.59,-570.14\"/>\n", + "<text text-anchor=\"middle\" x=\"604.19\" y=\"-690.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 6->1 -->\n", - "<g id=\"edge600\" class=\"edge\"><title>6->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M440.21,-801.882C492.081,-712.207 692.684,-318.771 741.793,-210.801\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"745.047,-212.098 745.94,-201.541 738.658,-209.237 745.047,-212.098\"/>\n", - "<text text-anchor=\"middle\" x=\"577.001\" y=\"-495.141\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge300\" class=\"edge\">\n", + "<title>6->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M440.21,-801.88C492.08,-712.21 692.68,-318.77 741.79,-210.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"745.05,-212.1 745.94,-201.54 738.66,-209.24 745.05,-212.1\"/>\n", + "<text text-anchor=\"middle\" x=\"576.5\" y=\"-510.14\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->20 -->\n", - "<g id=\"edge602\" class=\"edge\"><title>5->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M564.451,-782.287C608.967,-706.192 758.052,-413.879 799.134,-322.542\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"802.448,-323.701 803.288,-313.14 796.045,-320.873 802.448,-323.701\"/>\n", - "<text text-anchor=\"middle\" x=\"695.793\" y=\"-555.214\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge301\" class=\"edge\">\n", + "<title>5->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M564.45,-782.29C608.97,-706.19 758.05,-413.88 799.13,-322.54\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"802.45,-323.7 803.29,-313.14 796.05,-320.87 802.45,-323.7\"/>\n", + "<text text-anchor=\"middle\" x=\"696.29\" y=\"-556.21\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->19 -->\n", - "<g id=\"edge604\" class=\"edge\"><title>5->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M569.127,-782.436C619.509,-720.891 765.814,-519.71 813.822,-446.213\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"816.958,-447.808 819.427,-437.505 811.072,-444.019 816.958,-447.808\"/>\n", - "<text text-anchor=\"middle\" x=\"678.474\" y=\"-601.125\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge302\" class=\"edge\">\n", + "<title>5->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M569.13,-782.44C619.51,-720.89 765.81,-519.71 813.82,-446.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"816.96,-447.81 819.43,-437.5 811.07,-444.02 816.96,-447.81\"/>\n", + "<text text-anchor=\"middle\" x=\"705.97\" y=\"-618.12\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->18 -->\n", - "<g id=\"edge606\" class=\"edge\"><title>5->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M557.27,-782.361C578.214,-686.532 649.184,-239.445 662.243,-122.597\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"665.724,-122.951 663.293,-112.639 658.763,-122.217 665.724,-122.951\"/>\n", - "<text text-anchor=\"middle\" x=\"623.756\" y=\"-450.279\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge303\" class=\"edge\">\n", + "<title>5->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M557.27,-782.36C578.21,-686.53 649.18,-239.44 662.24,-122.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"665.72,-122.95 663.29,-112.64 658.76,-122.22 665.72,-122.95\"/>\n", + "<text text-anchor=\"middle\" x=\"624.26\" y=\"-456.28\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->17 -->\n", - "<g id=\"edge608\" class=\"edge\"><title>5->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M554.259,-782.406C560.079,-681.653 560.252,-190.17 554.78,-66.1121\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"558.264,-65.7169 554.269,-55.9044 551.273,-66.0669 558.264,-65.7169\"/>\n", - "<text text-anchor=\"middle\" x=\"567.519\" y=\"-420.059\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge304\" class=\"edge\">\n", + "<title>5->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M554.26,-782.41C560.08,-681.65 560.25,-190.17 554.78,-66.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"558.26,-65.72 554.27,-55.9 551.27,-66.07 558.26,-65.72\"/>\n", + "<text text-anchor=\"middle\" x=\"569.02\" y=\"-428.06\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->16 -->\n", - "<g id=\"edge610\" class=\"edge\"><title>5->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M551.367,-782.352C541.045,-679.639 460.773,-171.685 435.299,-46.1091\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"438.684,-45.1968 433.214,-36.1231 431.832,-46.6273 438.684,-45.1968\"/>\n", - "<text text-anchor=\"middle\" x=\"479.333\" y=\"-412.03\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge305\" class=\"edge\">\n", + "<title>5->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M551.37,-782.35C541.04,-679.64 460.77,-171.68 435.3,-46.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"438.68,-45.2 433.21,-36.12 431.83,-46.63 438.68,-45.2\"/>\n", + "<text text-anchor=\"middle\" x=\"478.83\" y=\"-403.03\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->15 -->\n", - "<g id=\"edge612\" class=\"edge\"><title>5->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M548.465,-782.462C521.865,-681.634 361.803,-188.399 316.089,-65.4328\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"319.318,-64.0754 312.51,-55.957 312.769,-66.5487 319.318,-64.0754\"/>\n", - "<text text-anchor=\"middle\" x=\"418.277\" y=\"-423.747\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge306\" class=\"edge\">\n", + "<title>5->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M548.46,-782.46C521.86,-681.63 361.8,-188.4 316.09,-65.43\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"319.32,-64.08 312.51,-55.96 312.77,-66.55 319.32,-64.08\"/>\n", + "<text text-anchor=\"middle\" x=\"446.78\" y=\"-412.75\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->14 -->\n", - "<g id=\"edge614\" class=\"edge\"><title>5->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M545.32,-782.38C502.823,-686.271 274.029,-236.807 209.276,-121.561\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.195,-119.614 204.212,-112.649 206.11,-123.072 212.195,-119.614\"/>\n", - "<text text-anchor=\"middle\" x=\"363.298\" y=\"-454.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge307\" class=\"edge\">\n", + "<title>5->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M545.32,-782.38C502.82,-686.27 274.03,-236.81 209.28,-121.56\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.2,-119.61 204.21,-112.65 206.11,-123.07 212.2,-119.61\"/>\n", + "<text text-anchor=\"middle\" x=\"391.8\" y=\"-455.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->13 -->\n", - "<g id=\"edge616\" class=\"edge\"><title>5->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M541.724,-782.272C484.6,-694.146 207.973,-313.05 126.272,-209.401\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.817,-206.978 119.853,-201.33 123.339,-211.335 128.817,-206.978\"/>\n", - "<text text-anchor=\"middle\" x=\"346.998\" y=\"-482.636\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge308\" class=\"edge\">\n", + "<title>5->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M541.72,-782.27C484.6,-694.15 207.97,-313.05 126.27,-209.4\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.82,-206.98 119.85,-201.33 123.34,-211.33 128.82,-206.98\"/>\n", + "<text text-anchor=\"middle\" x=\"348.5\" y=\"-499.64\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->12 -->\n", - "<g id=\"edge618\" class=\"edge\"><title>5->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M537.596,-782.438C468.551,-705.886 172.016,-409.026 76.406,-320.273\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"78.5542,-317.493 68.8284,-313.291 73.8108,-322.641 78.5542,-317.493\"/>\n", - "<text text-anchor=\"middle\" x=\"296.001\" y=\"-558.156\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge309\" class=\"edge\">\n", + "<title>5->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M537.6,-782.44C468.55,-705.89 172.02,-409.03 76.41,-320.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"78.55,-317.49 68.83,-313.29 73.81,-322.64 78.55,-317.49\"/>\n", + "<text text-anchor=\"middle\" x=\"321.5\" y=\"-555.16\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->11 -->\n", - "<g id=\"edge620\" class=\"edge\"><title>5->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M532.149,-782.506C453.579,-719.334 164.261,-508.876 62.5816,-440.574\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.4408,-437.607 54.179,-434.971 60.5574,-443.431 64.4408,-437.607\"/>\n", - "<text text-anchor=\"middle\" x=\"289.365\" y=\"-619.34\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge310\" class=\"edge\">\n", + "<title>5->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M532.15,-782.51C453.58,-719.33 164.26,-508.88 62.58,-440.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.44,-437.61 54.18,-434.97 60.56,-443.43 64.44,-437.61\"/>\n", + "<text text-anchor=\"middle\" x=\"311.87\" y=\"-615.34\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->10 -->\n", - "<g id=\"edge622\" class=\"edge\"><title>5->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.904,-782.954C440.017,-734.708 179.401,-601.809 82.9736,-557.452\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.185,-554.158 73.6333,-553.203 81.286,-560.53 84.185,-554.158\"/>\n", - "<text text-anchor=\"middle\" x=\"309.939\" y=\"-654.003\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge311\" class=\"edge\">\n", + "<title>5->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.9,-782.95C440.02,-734.71 179.4,-601.81 82.97,-557.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.18,-554.16 73.63,-553.2 81.29,-560.53 84.18,-554.16\"/>\n", + "<text text-anchor=\"middle\" x=\"289.44\" y=\"-659\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->9 -->\n", - "<g id=\"edge624\" class=\"edge\"><title>5->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.701,-787.953C447.573,-758.473 228.089,-687.032 140.418,-662.715\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.21,-659.303 130.641,-660.054 139.371,-666.058 141.21,-659.303\"/>\n", - "<text text-anchor=\"middle\" x=\"328.559\" y=\"-733.134\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge312\" class=\"edge\">\n", + "<title>5->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.7,-787.95C447.57,-758.47 228.09,-687.03 140.42,-662.72\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.21,-659.3 130.64,-660.05 139.37,-666.06 141.21,-659.3\"/>\n", + "<text text-anchor=\"middle\" x=\"318.06\" y=\"-714.13\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->8 -->\n", - "<g id=\"edge626\" class=\"edge\"><title>5->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.977,-792.374C461.438,-778.509 302.493,-753.172 229.741,-745.127\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.965,-741.631 219.654,-744.069 229.234,-748.593 229.965,-741.631\"/>\n", - "<text text-anchor=\"middle\" x=\"376.359\" y=\"-775.551\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge313\" class=\"edge\">\n", + "<title>5->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.98,-792.37C461.44,-778.51 302.49,-753.17 229.74,-745.13\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.96,-741.63 219.65,-744.07 229.23,-748.59 229.96,-741.63\"/>\n", + "<text text-anchor=\"middle\" x=\"362.86\" y=\"-757.55\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->7 -->\n", - "<g id=\"edge628\" class=\"edge\"><title>5->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.534,-796.079C479.934,-793.189 391.717,-793.002 341.469,-795.517\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.136,-792.03 331.352,-796.095 341.536,-799.019 341.136,-792.03\"/>\n", - "<text text-anchor=\"middle\" x=\"433.001\" y=\"-800.598\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge314\" class=\"edge\">\n", + "<title>5->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.53,-796.08C479.93,-793.19 391.72,-793 341.47,-795.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.14,-792.03 331.35,-796.1 341.54,-799.02 341.14,-792.03\"/>\n", + "<text text-anchor=\"middle\" x=\"433\" y=\"-784.6\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->6 -->\n", - "<g id=\"edge630\" class=\"edge\"><title>5->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.842,-799.108C507.304,-800.644 484.265,-804.076 465.065,-807.925\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"464.195,-804.531 455.139,-810.031 465.648,-811.379 464.195,-804.531\"/>\n", - "<text text-anchor=\"middle\" x=\"493.954\" y=\"-789.316\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge315\" class=\"edge\">\n", + "<title>5->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M524.84,-799.11C507.3,-800.64 484.26,-804.08 465.07,-807.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"464.19,-804.53 455.14,-810.03 465.65,-811.38 464.19,-804.53\"/>\n", + "<text text-anchor=\"middle\" x=\"509.45\" y=\"-792.32\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->5 -->\n", - "<g id=\"edge632\" class=\"edge\"><title>5->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.249,-807.255C589.032,-807.4 597.008,-805.152 597.008,-800.511 597.008,-797.683 594.046,-795.744 589.519,-794.693\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.523,-791.179 579.249,-793.768 588.894,-798.151 589.523,-791.179\"/>\n", - "<text text-anchor=\"middle\" x=\"609.061\" y=\"-796.311\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge316\" class=\"edge\">\n", + "<title>5->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.25,-807.25C589.03,-807.4 597.01,-805.15 597.01,-800.51 597.01,-797.68 594.05,-795.74 589.52,-794.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.52,-791.18 579.25,-793.77 588.89,-798.15 589.52,-791.18\"/>\n", + "<text text-anchor=\"middle\" x=\"611.51\" y=\"-796.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->4 -->\n", - "<g id=\"edge634\" class=\"edge\"><title>5->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.132,-793.087C595.061,-786.271 615.253,-776.208 631.936,-766.857\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"633.872,-769.781 640.794,-761.76 630.381,-763.713 633.872,-769.781\"/>\n", - "<text text-anchor=\"middle\" x=\"599.534\" y=\"-763.772\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge317\" class=\"edge\">\n", + "<title>5->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.13,-793.09C595.06,-786.27 615.25,-776.21 631.94,-766.86\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"633.87,-769.78 640.79,-761.76 630.38,-763.71 633.87,-769.78\"/>\n", + "<text text-anchor=\"middle\" x=\"591.03\" y=\"-768.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->3 -->\n", - "<g id=\"edge636\" class=\"edge\"><title>5->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.31,-786.379C618.167,-761.547 688.761,-710.374 726.766,-679.594\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"729.304,-682.037 734.802,-672.98 724.856,-676.632 729.304,-682.037\"/>\n", - "<text text-anchor=\"middle\" x=\"661.038\" y=\"-740.786\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge318\" class=\"edge\">\n", + "<title>5->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M579.31,-786.38C618.17,-761.55 688.76,-710.37 726.77,-679.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"729.3,-682.04 734.8,-672.98 724.86,-676.63 729.3,-682.04\"/>\n", + "<text text-anchor=\"middle\" x=\"638.54\" y=\"-721.79\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge638\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M575.847,-782.205C626.262,-737.074 742.515,-620.887 789.44,-568.812\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.332,-570.826 796.355,-561.025 787.098,-566.178 792.332,-570.826\"/>\n", - "<text text-anchor=\"middle\" x=\"671.643\" y=\"-660.308\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge319\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M575.85,-782.2C626.26,-737.07 742.51,-620.89 789.44,-568.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"792.33,-570.83 796.35,-561.02 787.1,-566.18 792.33,-570.83\"/>\n", + "<text text-anchor=\"middle\" x=\"668.14\" y=\"-679.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 5->1 -->\n", - "<g id=\"edge640\" class=\"edge\"><title>5->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M560.522,-782.484C594.603,-695.317 717.502,-317.559 746.601,-211.25\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"749.992,-212.118 749.189,-201.553 743.229,-210.312 749.992,-212.118\"/>\n", - "<text text-anchor=\"middle\" x=\"667.561\" y=\"-496.667\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge320\" class=\"edge\">\n", + "<title>5->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M560.52,-782.48C594.6,-695.32 717.5,-317.56 746.6,-211.25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"749.99,-212.12 749.19,-201.55 743.23,-210.31 749.99,-212.12\"/>\n", + "<text text-anchor=\"middle\" x=\"639.06\" y=\"-500.67\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->20 -->\n", - "<g id=\"edge642\" class=\"edge\"><title>4->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M672.771,-725.468C700.459,-656.171 781.504,-407.273 804.014,-323.138\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.45,-323.832 806.573,-313.273 800.674,-322.075 807.45,-323.832\"/>\n", - "<text text-anchor=\"middle\" x=\"724.393\" y=\"-516.103\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge321\" class=\"edge\">\n", + "<title>4->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M672.77,-725.47C700.46,-656.17 781.5,-407.27 804.01,-323.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.45,-323.83 806.57,-313.27 800.67,-322.07 807.45,-323.83\"/>\n", + "<text text-anchor=\"middle\" x=\"745.64\" y=\"-513.1\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->19 -->\n", - "<g id=\"edge644\" class=\"edge\"><title>4->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M676.981,-725.301C709.318,-671.201 790.778,-511.641 819.339,-446.85\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"822.713,-447.865 823.453,-437.296 816.284,-445.096 822.713,-447.865\"/>\n", - "<text text-anchor=\"middle\" x=\"734.16\" y=\"-574.875\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge322\" class=\"edge\">\n", + "<title>4->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M676.98,-725.3C709.32,-671.2 790.78,-511.64 819.34,-446.85\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"822.71,-447.86 823.45,-437.3 816.28,-445.1 822.71,-447.86\"/>\n", + "<text text-anchor=\"middle\" x=\"762.66\" y=\"-589.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->18 -->\n", - "<g id=\"edge646\" class=\"edge\"><title>4->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M666.235,-725.509C671.816,-635.37 672,-233.618 666.788,-122.92\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"670.278,-122.651 666.249,-112.852 663.288,-123.025 670.278,-122.651\"/>\n", - "<text text-anchor=\"middle\" x=\"679.511\" y=\"-420.015\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge323\" class=\"edge\">\n", + "<title>4->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M666.24,-725.51C671.82,-635.37 672,-233.62 666.79,-122.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"670.28,-122.65 666.25,-112.85 663.29,-123.02 670.28,-122.65\"/>\n", + "<text text-anchor=\"middle\" x=\"681.01\" y=\"-428.01\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->17 -->\n", - "<g id=\"edge648\" class=\"edge\"><title>4->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M663.281,-725.378C653.891,-629.514 583.269,-182.445 559.345,-65.6185\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"562.734,-64.7252 557.245,-55.6633 555.885,-66.1705 562.734,-64.7252\"/>\n", - "<text text-anchor=\"middle\" x=\"597.313\" y=\"-393.298\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge324\" class=\"edge\">\n", + "<title>4->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M663.28,-725.38C653.89,-629.51 583.27,-182.44 559.35,-65.62\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"562.73,-64.73 557.24,-55.66 555.88,-66.17 562.73,-64.73\"/>\n", + "<text text-anchor=\"middle\" x=\"625.81\" y=\"-399.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->16 -->\n", - "<g id=\"edge650\" class=\"edge\"><title>4->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M660.264,-725.266C634.497,-627.278 484.288,-164.367 440.072,-45.7413\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"443.297,-44.3755 436.482,-36.264 436.751,-46.8554 443.297,-44.3755\"/>\n", - "<text text-anchor=\"middle\" x=\"564.168\" y=\"-377.303\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge325\" class=\"edge\">\n", + "<title>4->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M660.26,-725.27C634.5,-627.28 484.29,-164.37 440.07,-45.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"443.3,-44.38 436.48,-36.26 436.75,-46.86 443.3,-44.38\"/>\n", + "<text text-anchor=\"middle\" x=\"564.67\" y=\"-374.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->15 -->\n", - "<g id=\"edge652\" class=\"edge\"><title>4->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M657.126,-725.412C614.629,-629.303 385.835,-179.839 321.082,-64.5929\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"324.001,-62.646 316.017,-55.6811 317.915,-66.1046 324.001,-62.646\"/>\n", - "<text text-anchor=\"middle\" x=\"475.104\" y=\"-397.802\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge326\" class=\"edge\">\n", + "<title>4->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M657.13,-725.41C614.63,-629.3 385.84,-179.84 321.08,-64.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"324,-62.65 316.02,-55.68 317.92,-66.1 324,-62.65\"/>\n", + "<text text-anchor=\"middle\" x=\"496.35\" y=\"-383.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->14 -->\n", - "<g id=\"edge654\" class=\"edge\"><title>4->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M653.576,-725.476C594.589,-634.644 299.835,-228.596 215.074,-120.871\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"217.617,-118.445 208.659,-112.788 212.134,-122.797 217.617,-118.445\"/>\n", - "<text text-anchor=\"middle\" x=\"447.325\" y=\"-409.974\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge327\" class=\"edge\">\n", + "<title>4->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M653.58,-725.48C594.59,-634.64 299.83,-228.6 215.07,-120.87\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"217.62,-118.45 208.66,-112.79 212.13,-122.8 217.62,-118.45\"/>\n", + "<text text-anchor=\"middle\" x=\"419.82\" y=\"-411.97\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->13 -->\n", - "<g id=\"edge656\" class=\"edge\"><title>4->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M649.108,-725.324C574.235,-642.724 235.965,-304.151 133.226,-208.529\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"135.404,-205.777 125.685,-201.56 130.653,-210.917 135.404,-205.777\"/>\n", - "<text text-anchor=\"middle\" x=\"380.167\" y=\"-473.727\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge328\" class=\"edge\">\n", + "<title>4->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M649.11,-725.32C574.23,-642.72 235.97,-304.15 133.23,-208.53\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"135.4,-205.78 125.68,-201.56 130.65,-210.92 135.4,-205.78\"/>\n", + "<text text-anchor=\"middle\" x=\"405.67\" y=\"-455.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->12 -->\n", - "<g id=\"edge658\" class=\"edge\"><title>4->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M643.442,-725.39C554.092,-654.062 196.714,-394.177 82.1379,-316.877\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.9422,-313.873 73.6865,-311.213 80.0455,-319.688 83.9422,-313.873\"/>\n", - "<text text-anchor=\"middle\" x=\"370.79\" y=\"-504.933\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge329\" class=\"edge\">\n", + "<title>4->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M643.44,-725.39C554.09,-654.06 196.71,-394.18 82.14,-316.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.94,-313.87 73.69,-311.21 80.05,-319.69 83.94,-313.87\"/>\n", + "<text text-anchor=\"middle\" x=\"377.29\" y=\"-524.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->11 -->\n", - "<g id=\"edge660\" class=\"edge\"><title>4->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.582,-726.287C535.107,-669.098 179.084,-487.589 63.5107,-433.975\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.8926,-430.758 54.3446,-429.762 61.9692,-437.119 64.8926,-430.758\"/>\n", - "<text text-anchor=\"middle\" x=\"356.046\" y=\"-563.931\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge330\" class=\"edge\">\n", + "<title>4->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.58,-726.29C535.11,-669.1 179.08,-487.59 63.51,-433.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.89,-430.76 54.34,-429.76 61.97,-437.12 64.89,-430.76\"/>\n", + "<text text-anchor=\"middle\" x=\"364.55\" y=\"-583.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->10 -->\n", - "<g id=\"edge662\" class=\"edge\"><title>4->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.628,-731.522C537.732,-694.302 197.082,-583.496 83.6759,-551.489\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.3054,-548.031 73.7334,-548.727 82.4314,-554.776 84.3054,-548.031\"/>\n", - "<text text-anchor=\"middle\" x=\"364.152\" y=\"-625.306\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge331\" class=\"edge\">\n", + "<title>4->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.63,-731.52C537.73,-694.3 197.08,-583.5 83.68,-551.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.31,-548.03 73.73,-548.73 82.43,-554.78 84.31,-548.03\"/>\n", + "<text text-anchor=\"middle\" x=\"345.65\" y=\"-630.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->9 -->\n", - "<g id=\"edge664\" class=\"edge\"><title>4->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.525,-736.034C544.617,-716.757 246.253,-669.363 140.874,-657.115\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.043,-653.613 130.716,-655.98 140.265,-660.569 141.043,-653.613\"/>\n", - "<text text-anchor=\"middle\" x=\"389.699\" y=\"-681.375\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge332\" class=\"edge\">\n", + "<title>4->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.53,-736.03C544.62,-716.76 246.25,-669.36 140.87,-657.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.04,-653.61 130.72,-655.98 140.27,-660.57 141.04,-653.61\"/>\n", + "<text text-anchor=\"middle\" x=\"374.2\" y=\"-685.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->8 -->\n", - "<g id=\"edge666\" class=\"edge\"><title>4->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.771,-740.186C556.871,-735.838 321.729,-735.669 229.784,-739.68\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.373,-736.196 219.554,-740.176 229.712,-743.188 229.373,-736.196\"/>\n", - "<text text-anchor=\"middle\" x=\"433.277\" y=\"-726.733\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge333\" class=\"edge\">\n", + "<title>4->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.77,-740.19C556.87,-735.84 321.73,-735.67 229.78,-739.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.37,-736.2 219.55,-740.18 229.71,-743.19 229.37,-736.2\"/>\n", + "<text text-anchor=\"middle\" x=\"418.78\" y=\"-728.73\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->7 -->\n", - "<g id=\"edge668\" class=\"edge\"><title>4->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.781,-744.04C573.252,-750.256 414.36,-775.214 341.589,-790.17\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"340.56,-786.81 331.499,-792.301 342.007,-793.659 340.56,-786.81\"/>\n", - "<text text-anchor=\"middle\" x=\"490.185\" y=\"-773.905\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge334\" class=\"edge\">\n", + "<title>4->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.78,-744.04C573.25,-750.26 414.36,-775.21 341.59,-790.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"340.56,-786.81 331.5,-792.3 342.01,-793.66 340.56,-786.81\"/>\n", + "<text text-anchor=\"middle\" x=\"474.69\" y=\"-755.91\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->6 -->\n", - "<g id=\"edge670\" class=\"edge\"><title>4->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.776,-747.7C594.447,-758.444 512.498,-784.813 464.845,-802.789\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"463.3,-799.633 455.223,-806.489 465.813,-806.166 463.3,-799.633\"/>\n", - "<text text-anchor=\"middle\" x=\"547.81\" y=\"-759.045\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge335\" class=\"edge\">\n", + "<title>4->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.78,-747.7C594.45,-758.44 512.5,-784.81 464.84,-802.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"463.3,-799.63 455.22,-806.49 465.81,-806.17 463.3,-799.63\"/>\n", + "<text text-anchor=\"middle\" x=\"558.06\" y=\"-764.04\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->5 -->\n", - "<g id=\"edge672\" class=\"edge\"><title>4->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.69,-750.967C620.761,-757.783 600.569,-767.846 583.886,-777.198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"581.95,-774.274 575.028,-782.294 585.441,-780.341 581.95,-774.274\"/>\n", - "<text text-anchor=\"middle\" x=\"604.288\" y=\"-747.882\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge336\" class=\"edge\">\n", + "<title>4->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M636.69,-750.97C620.76,-757.78 600.57,-767.85 583.89,-777.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"581.95,-774.27 575.03,-782.29 585.44,-780.34 581.95,-774.27\"/>\n", + "<text text-anchor=\"middle\" x=\"624.79\" y=\"-767.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->4 -->\n", - "<g id=\"edge674\" class=\"edge\"><title>4->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M691.055,-750.287C700.838,-750.432 708.814,-748.184 708.814,-743.543 708.814,-740.715 705.852,-738.776 701.324,-737.725\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"701.328,-734.212 691.055,-736.8 700.7,-741.183 701.328,-734.212\"/>\n", - "<text text-anchor=\"middle\" x=\"720.867\" y=\"-739.343\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge337\" class=\"edge\">\n", + "<title>4->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M691.05,-750.29C700.84,-750.43 708.81,-748.18 708.81,-743.54 708.81,-740.72 705.85,-738.78 701.32,-737.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"701.33,-734.21 691.05,-736.8 700.7,-741.18 701.33,-734.21\"/>\n", + "<text text-anchor=\"middle\" x=\"723.31\" y=\"-739.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->3 -->\n", - "<g id=\"edge676\" class=\"edge\"><title>4->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M690.413,-725.362C704.867,-712.439 722.275,-695.004 735.037,-680.656\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"737.717,-682.908 741.601,-673.051 732.417,-678.334 737.717,-682.908\"/>\n", - "<text text-anchor=\"middle\" x=\"701.725\" y=\"-687.809\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge338\" class=\"edge\">\n", + "<title>4->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M690.41,-725.36C704.87,-712.44 722.27,-695 735.04,-680.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"737.72,-682.91 741.6,-673.05 732.42,-678.33 737.72,-682.91\"/>\n", + "<text text-anchor=\"middle\" x=\"698.23\" y=\"-706.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge678\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M682.342,-725.37C712.075,-689.83 769.267,-611.265 795.72,-569.776\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"798.85,-571.371 801.169,-561.033 792.909,-567.668 798.85,-571.371\"/>\n", - "<text text-anchor=\"middle\" x=\"727.031\" y=\"-634.373\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge339\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M682.34,-725.37C712.07,-689.83 769.27,-611.26 795.72,-569.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"798.85,-571.37 801.17,-561.03 792.91,-567.67 798.85,-571.37\"/>\n", + "<text text-anchor=\"middle\" x=\"724.53\" y=\"-636.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge680\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M669.364,-725.315C687.666,-643.707 740.446,-311.594 751.23,-211.81\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"754.739,-211.894 752.262,-201.593 747.775,-211.191 754.739,-211.894\"/>\n", - "<text text-anchor=\"middle\" x=\"724.297\" y=\"-466.363\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge340\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M669.36,-725.32C687.67,-643.71 740.45,-311.59 751.23,-211.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"754.74,-211.89 752.26,-201.59 747.77,-211.19 754.74,-211.89\"/>\n", + "<text text-anchor=\"middle\" x=\"695.8\" y=\"-472.36\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->20 -->\n", - "<g id=\"edge682\" class=\"edge\"><title>3->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M758.711,-636.487C772.559,-577.796 801.831,-394.229 808.892,-323.4\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"812.38,-323.691 809.799,-313.415 805.409,-323.058 812.38,-323.691\"/>\n", - "<text text-anchor=\"middle\" x=\"769.802\" y=\"-473.743\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge341\" class=\"edge\">\n", + "<title>3->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M758.71,-636.49C772.56,-577.8 801.83,-394.23 808.89,-323.4\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"812.38,-323.69 809.8,-313.42 805.41,-323.06 812.38,-323.69\"/>\n", + "<text text-anchor=\"middle\" x=\"798.3\" y=\"-468.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->19 -->\n", - "<g id=\"edge684\" class=\"edge\"><title>3->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M762.532,-636.731C779.593,-595.836 812.197,-496.091 824.728,-447.114\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"828.177,-447.741 827.148,-437.196 821.377,-446.081 828.177,-447.741\"/>\n", - "<text text-anchor=\"middle\" x=\"807.63\" y=\"-541.722\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge342\" class=\"edge\">\n", + "<title>3->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M762.53,-636.73C779.59,-595.84 812.2,-496.09 824.73,-447.11\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"828.18,-447.74 827.15,-437.2 821.38,-446.08 828.18,-447.74\"/>\n", + "<text text-anchor=\"middle\" x=\"779.13\" y=\"-545.72\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->18 -->\n", - "<g id=\"edge686\" class=\"edge\"><title>3->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M752.278,-636.721C744.798,-555.219 692.215,-221.906 671.478,-122.626\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"674.873,-121.765 669.342,-112.729 668.031,-123.242 674.873,-121.765\"/>\n", - "<text text-anchor=\"middle\" x=\"697.878\" y=\"-377.473\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge343\" class=\"edge\">\n", + "<title>3->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M752.28,-636.72C744.8,-555.22 692.21,-221.91 671.48,-122.63\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"674.87,-121.77 669.34,-112.73 668.03,-123.24 674.87,-121.77\"/>\n", + "<text text-anchor=\"middle\" x=\"726.38\" y=\"-383.47\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->17 -->\n", - "<g id=\"edge688\" class=\"edge\"><title>3->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M749.188,-636.582C726.535,-548.967 604.017,-171.233 564.22,-65.3226\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"567.368,-63.7564 560.526,-55.6672 560.83,-66.2577 567.368,-63.7564\"/>\n", - "<text text-anchor=\"middle\" x=\"642.704\" y=\"-350.752\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge344\" class=\"edge\">\n", + "<title>3->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M749.19,-636.58C726.54,-548.97 604.02,-171.23 564.22,-65.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"567.37,-63.76 560.53,-55.67 560.83,-66.26 567.37,-63.76\"/>\n", + "<text text-anchor=\"middle\" x=\"671.2\" y=\"-354.75\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->16 -->\n", - "<g id=\"edge690\" class=\"edge\"><title>3->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M745.984,-636.7C706.668,-547.176 505.725,-152.345 445.195,-44.9994\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"448.103,-43.0327 440.107,-36.0819 442.023,-46.502 448.103,-43.0327\"/>\n", - "<text text-anchor=\"middle\" x=\"609.59\" y=\"-329.65\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge345\" class=\"edge\">\n", + "<title>3->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M745.98,-636.7C706.67,-547.18 505.72,-152.34 445.2,-45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"448.1,-43.03 440.11,-36.08 442.02,-46.5 448.1,-43.03\"/>\n", + "<text text-anchor=\"middle\" x=\"610.09\" y=\"-329.65\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->15 -->\n", - "<g id=\"edge692\" class=\"edge\"><title>3->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M742.259,-636.575C685.135,-548.448 408.508,-167.353 326.808,-63.7035\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"329.353,-61.2804 320.389,-55.6325 323.874,-65.6376 329.353,-61.2804\"/>\n", - "<text text-anchor=\"middle\" x=\"521.533\" y=\"-354.939\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge346\" class=\"edge\">\n", + "<title>3->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M742.26,-636.57C685.14,-548.45 408.51,-167.35 326.81,-63.7\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"329.35,-61.28 320.39,-55.63 323.87,-65.64 329.35,-61.28\"/>\n", + "<text text-anchor=\"middle\" x=\"549.03\" y=\"-353.94\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->14 -->\n", - "<g id=\"edge694\" class=\"edge\"><title>3->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M737.837,-636.594C662.964,-553.995 324.695,-215.421 221.956,-119.8\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"224.134,-117.047 214.414,-112.83 219.383,-122.188 224.134,-117.047\"/>\n", - "<text text-anchor=\"middle\" x=\"490.897\" y=\"-362.997\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge347\" class=\"edge\">\n", + "<title>3->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M737.84,-636.59C662.96,-553.99 324.69,-215.42 221.96,-119.8\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"224.13,-117.05 214.41,-112.83 219.38,-122.19 224.13,-117.05\"/>\n", + "<text text-anchor=\"middle\" x=\"494.4\" y=\"-367\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->13 -->\n", - "<g id=\"edge696\" class=\"edge\"><title>3->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M732.138,-636.712C639.442,-562.847 257.914,-285.421 139.074,-205.136\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.908,-202.152 130.654,-199.485 137.007,-207.964 140.908,-202.152\"/>\n", - "<text text-anchor=\"middle\" x=\"427.606\" y=\"-428.724\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge348\" class=\"edge\">\n", + "<title>3->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M732.14,-636.71C639.44,-562.85 257.91,-285.42 139.07,-205.14\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.91,-202.15 130.65,-199.49 137.01,-207.96 140.91,-202.15\"/>\n", + "<text text-anchor=\"middle\" x=\"450.11\" y=\"-409.72\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->12 -->\n", - "<g id=\"edge698\" class=\"edge\"><title>3->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.301,-637.708C615.737,-576.184 207.399,-368.025 82.8862,-310.081\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.2895,-306.874 73.743,-305.863 81.3575,-313.23 84.2895,-306.874\"/>\n", - "<text text-anchor=\"middle\" x=\"398.094\" y=\"-481.694\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge349\" class=\"edge\">\n", + "<title>3->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.3,-637.71C615.74,-576.18 207.4,-368.02 82.89,-310.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.29,-306.87 73.74,-305.86 81.36,-313.23 84.29,-306.87\"/>\n", + "<text text-anchor=\"middle\" x=\"418.59\" y=\"-477.69\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->11 -->\n", - "<g id=\"edge700\" class=\"edge\"><title>3->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.415,-643.041C614.041,-601.455 191.878,-464.168 63.9533,-427.767\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.7934,-424.368 54.2197,-425.035 62.9021,-431.107 64.7934,-424.368\"/>\n", - "<text text-anchor=\"middle\" x=\"390.684\" y=\"-543.204\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge350\" class=\"edge\">\n", + "<title>3->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.42,-643.04C614.04,-601.45 191.88,-464.17 63.95,-427.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.79,-424.37 54.22,-425.04 62.9,-431.11 64.79,-424.37\"/>\n", + "<text text-anchor=\"middle\" x=\"409.18\" y=\"-524.2\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->10 -->\n", - "<g id=\"edge702\" class=\"edge\"><title>3->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.314,-647.632C616.136,-625.188 209.95,-560.723 84.0681,-545.674\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.1256,-542.157 73.7899,-544.486 83.322,-549.111 84.1256,-542.157\"/>\n", - "<text text-anchor=\"middle\" x=\"403.691\" y=\"-603.453\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge351\" class=\"edge\">\n", + "<title>3->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.31,-647.63C616.14,-625.19 209.95,-560.72 84.07,-545.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.13,-542.16 73.79,-544.49 83.32,-549.11 84.13,-542.16\"/>\n", + "<text text-anchor=\"middle\" x=\"419.19\" y=\"-585.45\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->9 -->\n", - "<g id=\"edge704\" class=\"edge\"><title>3->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.485,-651.9C623.031,-646.937 258.748,-646.789 140.767,-651.459\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.609,-647.962 130.771,-651.895 140.914,-654.956 140.609,-647.962\"/>\n", - "<text text-anchor=\"middle\" x=\"433.126\" y=\"-638.48\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge352\" class=\"edge\">\n", + "<title>3->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.49,-651.9C623.03,-646.94 258.75,-646.79 140.77,-651.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.61,-647.96 130.77,-651.89 140.91,-654.96 140.61,-647.96\"/>\n", + "<text text-anchor=\"middle\" x=\"418.63\" y=\"-640.48\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->8 -->\n", - "<g id=\"edge706\" class=\"edge\"><title>3->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.416,-655.981C633.666,-665.751 334.841,-712.909 229.496,-734.011\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"228.725,-730.596 219.63,-736.031 230.129,-737.454 228.725,-730.596\"/>\n", - "<text text-anchor=\"middle\" x=\"478.456\" y=\"-701.796\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge353\" class=\"edge\">\n", + "<title>3->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.42,-655.98C633.67,-665.75 334.84,-712.91 229.5,-734.01\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"228.73,-730.6 219.63,-736.03 230.13,-737.45 228.73,-730.6\"/>\n", + "<text text-anchor=\"middle\" x=\"462.96\" y=\"-683.8\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->7 -->\n", - "<g id=\"edge708\" class=\"edge\"><title>3->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.453,-660.066C648.444,-680.572 428.263,-751.908 340.689,-784.47\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"339.294,-781.255 331.17,-788.056 341.762,-787.805 339.294,-781.255\"/>\n", - "<text text-anchor=\"middle\" x=\"536.071\" y=\"-730.068\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge354\" class=\"edge\">\n", + "<title>3->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.45,-660.07C648.44,-680.57 428.26,-751.91 340.69,-784.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"339.29,-781.26 331.17,-788.06 341.76,-787.81 339.29,-781.26\"/>\n", + "<text text-anchor=\"middle\" x=\"518.57\" y=\"-711.07\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->6 -->\n", - "<g id=\"edge710\" class=\"edge\"><title>3->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.338,-664.363C666.753,-690.127 528.826,-760.156 463.513,-797.024\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"461.746,-794.003 454.794,-801.998 465.215,-800.083 461.746,-794.003\"/>\n", - "<text text-anchor=\"middle\" x=\"588.425\" y=\"-714.493\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge355\" class=\"edge\">\n", + "<title>3->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.34,-664.36C666.75,-690.13 528.83,-760.16 463.51,-797.02\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"461.75,-794 454.79,-802 465.21,-800.08 461.75,-794\"/>\n", + "<text text-anchor=\"middle\" x=\"579.93\" y=\"-719.49\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->5 -->\n", - "<g id=\"edge712\" class=\"edge\"><title>3->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.242,-668.946C686.384,-693.778 615.79,-744.951 577.786,-775.731\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"575.247,-773.288 569.75,-782.345 579.695,-778.693 575.247,-773.288\"/>\n", - "<text text-anchor=\"middle\" x=\"643.514\" y=\"-706.139\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge356\" class=\"edge\">\n", + "<title>3->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.24,-668.95C686.38,-693.78 615.79,-744.95 577.79,-775.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"575.25,-773.29 569.75,-782.34 579.7,-778.69 575.25,-773.29\"/>\n", + "<text text-anchor=\"middle\" x=\"666.01\" y=\"-711.14\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->4 -->\n", - "<g id=\"edge714\" class=\"edge\"><title>3->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.944,-672.995C711.491,-685.918 694.082,-703.353 681.32,-717.701\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"678.64,-715.449 674.756,-725.306 683.94,-720.023 678.64,-715.449\"/>\n", - "<text text-anchor=\"middle\" x=\"692.632\" y=\"-680.148\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge357\" class=\"edge\">\n", + "<title>3->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.94,-672.99C711.49,-685.92 694.08,-703.35 681.32,-717.7\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"678.64,-715.45 674.76,-725.31 683.94,-720.02 678.64,-715.45\"/>\n", + "<text text-anchor=\"middle\" x=\"718.13\" y=\"-684.15\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge716\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M779.784,-661.557C789.567,-661.702 797.543,-659.454 797.543,-654.814 797.543,-651.986 794.581,-650.047 790.054,-648.996\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.058,-645.482 779.784,-648.07 789.43,-652.454 790.058,-645.482\"/>\n", - "<text text-anchor=\"middle\" x=\"809.597\" y=\"-650.614\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge358\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M779.78,-661.56C789.57,-661.7 797.54,-659.45 797.54,-654.81 797.54,-651.99 794.58,-650.05 790.05,-649\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.06,-645.48 779.78,-648.07 789.43,-652.45 790.06,-645.48\"/>\n", + "<text text-anchor=\"middle\" x=\"812.04\" y=\"-651.11\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->2 -->\n", - "<g id=\"edge718\" class=\"edge\"><title>3->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M767.771,-636.742C778.792,-618.882 792.944,-591.387 801.815,-570.766\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"805.154,-571.848 805.709,-561.268 798.678,-569.192 805.154,-571.848\"/>\n", - "<text text-anchor=\"middle\" x=\"770.793\" y=\"-592.554\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge359\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M767.77,-636.74C778.79,-618.88 792.94,-591.39 801.82,-570.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"805.15,-571.85 805.71,-561.27 798.68,-569.19 805.15,-571.85\"/>\n", + "<text text-anchor=\"middle\" x=\"770.29\" y=\"-607.55\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge720\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M755.357,-636.62C760.397,-564.569 760.597,-298.918 755.959,-211.454\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"759.452,-211.237 755.353,-201.467 752.465,-211.66 759.452,-211.237\"/>\n", - "<text text-anchor=\"middle\" x=\"742.658\" y=\"-419.837\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge360\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M755.36,-636.62C760.4,-564.57 760.6,-298.92 755.96,-211.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"759.45,-211.24 755.35,-201.47 752.46,-211.66 759.45,-211.24\"/>\n", + "<text text-anchor=\"middle\" x=\"741.16\" y=\"-427.84\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->20 -->\n", - "<g id=\"edge722\" class=\"edge\"><title>2->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M813.249,-524.781C816.998,-481.986 817.247,-374.825 813.998,-323.458\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"817.481,-323.1 813.252,-313.386 810.501,-323.618 817.481,-323.1\"/>\n", - "<text text-anchor=\"middle\" x=\"826.624\" y=\"-419.919\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge361\" class=\"edge\">\n", + "<title>2->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M813.25,-524.78C817,-481.99 817.25,-374.83 814,-323.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"817.48,-323.1 813.25,-313.39 810.5,-323.62 817.48,-323.1\"/>\n", + "<text text-anchor=\"middle\" x=\"799.12\" y=\"-427.92\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->19 -->\n", - "<g id=\"edge724\" class=\"edge\"><title>2->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M817.44,-524.968C822.743,-504.619 828.264,-471.27 830.438,-447.431\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"833.945,-447.457 831.188,-437.227 826.964,-446.944 833.945,-447.457\"/>\n", - "<text text-anchor=\"middle\" x=\"837.939\" y=\"-483.999\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge362\" class=\"edge\">\n", + "<title>2->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M817.44,-524.97C822.74,-504.62 828.26,-471.27 830.44,-447.43\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"833.95,-447.46 831.19,-437.23 826.96,-446.94 833.95,-447.46\"/>\n", + "<text text-anchor=\"middle\" x=\"838.44\" y=\"-490\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->18 -->\n", - "<g id=\"edge726\" class=\"edge\"><title>2->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M806.565,-524.835C789.213,-455.236 708.317,-205.512 676.41,-122.005\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"679.663,-120.713 672.769,-112.668 673.141,-123.256 679.663,-120.713\"/>\n", - "<text text-anchor=\"middle\" x=\"755.487\" y=\"-315.22\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge363\" class=\"edge\">\n", + "<title>2->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M806.56,-524.84C789.21,-455.24 708.32,-205.51 676.41,-122\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"679.66,-120.71 672.77,-112.67 673.14,-123.26 679.66,-120.71\"/>\n", + "<text text-anchor=\"middle\" x=\"755.99\" y=\"-327.22\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->17 -->\n", - "<g id=\"edge728\" class=\"edge\"><title>2->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M803.287,-524.999C770.538,-449.173 621.388,-155.927 569.597,-64.7897\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"572.496,-62.8114 564.473,-55.8917 566.43,-66.3043 572.496,-62.8114\"/>\n", - "<text text-anchor=\"middle\" x=\"672.442\" y=\"-297.694\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge364\" class=\"edge\">\n", + "<title>2->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M803.29,-525C770.54,-449.17 621.39,-155.93 569.6,-64.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"572.5,-62.81 564.47,-55.89 566.43,-66.3 572.5,-62.81\"/>\n", + "<text text-anchor=\"middle\" x=\"700.94\" y=\"-298.69\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->16 -->\n", - "<g id=\"edge730\" class=\"edge\"><title>2->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M799.543,-524.919C749.212,-446.568 524.464,-136.837 451.164,-44.2409\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"453.729,-41.8441 444.752,-36.2173 448.261,-46.2142 453.729,-41.8441\"/>\n", - "<text text-anchor=\"middle\" x=\"638.354\" y=\"-271.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge365\" class=\"edge\">\n", + "<title>2->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M799.54,-524.92C749.21,-446.57 524.46,-136.84 451.16,-44.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"453.73,-41.84 444.75,-36.22 448.26,-46.21 453.73,-41.84\"/>\n", + "<text text-anchor=\"middle\" x=\"639.85\" y=\"-273.38\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->15 -->\n", - "<g id=\"edge732\" class=\"edge\"><title>2->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M795.099,-524.935C726.054,-448.383 429.519,-151.523 333.909,-62.7701\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"336.057,-59.9902 326.332,-55.7878 331.314,-65.1381 336.057,-59.9902\"/>\n", - "<text text-anchor=\"middle\" x=\"575.504\" y=\"-278.653\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge366\" class=\"edge\">\n", + "<title>2->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M795.1,-524.94C726.05,-448.38 429.52,-151.52 333.91,-62.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"336.06,-59.99 326.33,-55.79 331.31,-65.14 336.06,-59.99\"/>\n", + "<text text-anchor=\"middle\" x=\"579\" y=\"-297.65\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->14 -->\n", - "<g id=\"edge734\" class=\"edge\"><title>2->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M789.139,-524.855C699.79,-453.527 342.412,-193.642 227.835,-116.341\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.64,-113.337 219.384,-110.678 225.743,-119.152 229.64,-113.337\"/>\n", - "<text text-anchor=\"middle\" x=\"500.487\" y=\"-328.398\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge367\" class=\"edge\">\n", + "<title>2->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M789.14,-524.85C699.79,-453.53 342.41,-193.64 227.84,-116.34\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.64,-113.34 219.38,-110.68 225.74,-119.15 229.64,-113.34\"/>\n", + "<text text-anchor=\"middle\" x=\"522.99\" y=\"-324.4\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->13 -->\n", - "<g id=\"edge736\" class=\"edge\"><title>2->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.269,-525.902C672.705,-464.378 264.367,-256.219 139.854,-198.275\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.257,-195.068 130.711,-194.058 138.325,-201.425 141.257,-195.068\"/>\n", - "<text text-anchor=\"middle\" x=\"467.061\" y=\"-345.889\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge368\" class=\"edge\">\n", + "<title>2->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.27,-525.9C672.71,-464.38 264.37,-256.22 139.85,-198.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.26,-195.07 130.71,-194.06 138.33,-201.42 141.26,-195.07\"/>\n", + "<text text-anchor=\"middle\" x=\"468.31\" y=\"-350.89\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->12 -->\n", - "<g id=\"edge738\" class=\"edge\"><title>2->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.306,-531.274C666.678,-488.216 216.008,-341.671 83.4748,-303.871\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.3501,-300.481 73.7758,-301.142 82.4539,-307.219 84.3501,-300.481\"/>\n", - "<text text-anchor=\"middle\" x=\"428.89\" y=\"-425.372\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge369\" class=\"edge\">\n", + "<title>2->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.31,-531.27C666.68,-488.22 216.01,-341.67 83.47,-303.87\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"84.35,-300.48 73.78,-301.14 82.45,-307.22 84.35,-300.48\"/>\n", + "<text text-anchor=\"middle\" x=\"418.39\" y=\"-406.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->11 -->\n", - "<g id=\"edge740\" class=\"edge\"><title>2->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.085,-535.918C664.153,-511.916 200.039,-438.283 64.4087,-421.877\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.4651,-418.36 54.1257,-420.673 63.6504,-425.313 64.4651,-418.36\"/>\n", - "<text text-anchor=\"middle\" x=\"422.247\" y=\"-485.698\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge370\" class=\"edge\">\n", + "<title>2->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.09,-535.92C664.15,-511.92 200.04,-438.28 64.41,-421.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.47,-418.36 54.13,-420.67 63.65,-425.31 64.47,-418.36\"/>\n", + "<text text-anchor=\"middle\" x=\"437.75\" y=\"-467.7\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->10 -->\n", - "<g id=\"edge742\" class=\"edge\"><title>2->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.36,-540.296C666.971,-535.055 217.12,-534.916 83.9616,-539.878\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.7013,-536.386 73.8531,-540.293 83.9881,-543.38 83.7013,-536.386\"/>\n", - "<text text-anchor=\"middle\" x=\"433.161\" y=\"-544.887\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge371\" class=\"edge\">\n", + "<title>2->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.36,-540.3C666.97,-535.06 217.12,-534.92 83.96,-539.88\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"83.7,-536.39 73.85,-540.29 83.99,-543.38 83.7,-536.39\"/>\n", + "<text text-anchor=\"middle\" x=\"440.41\" y=\"-528.89\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->9 -->\n", - "<g id=\"edge744\" class=\"edge\"><title>2->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.264,-544.496C672.947,-556.626 266.082,-620.914 140.651,-645.656\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.866,-642.244 130.753,-647.647 141.247,-649.107 139.866,-642.244\"/>\n", - "<text text-anchor=\"middle\" x=\"462.457\" y=\"-601.876\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge372\" class=\"edge\">\n", + "<title>2->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.26,-544.5C672.95,-556.63 266.08,-620.91 140.65,-645.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.87,-642.24 130.75,-647.65 141.25,-649.11 139.87,-642.24\"/>\n", + "<text text-anchor=\"middle\" x=\"461.46\" y=\"-583.88\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->8 -->\n", - "<g id=\"edge746\" class=\"edge\"><title>2->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.479,-548.707C683.748,-575.628 342.59,-686.292 229.249,-727.906\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"227.778,-724.719 219.622,-731.481 230.215,-731.281 227.778,-724.719\"/>\n", - "<text text-anchor=\"middle\" x=\"508.864\" y=\"-646.107\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge373\" class=\"edge\">\n", + "<title>2->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.48,-548.71C683.75,-575.63 342.59,-686.29 229.25,-727.91\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"227.78,-724.72 219.62,-731.48 230.22,-731.28 227.78,-724.72\"/>\n", + "<text text-anchor=\"middle\" x=\"491.36\" y=\"-627.11\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->7 -->\n", - "<g id=\"edge748\" class=\"edge\"><title>2->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.308,-553.292C697.232,-591.534 436.349,-724.244 340.19,-777.914\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"338.408,-774.901 331.41,-782.856 341.841,-781.001 338.408,-774.901\"/>\n", - "<text text-anchor=\"middle\" x=\"555.249\" y=\"-649.403\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge374\" class=\"edge\">\n", + "<title>2->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.31,-553.29C697.23,-591.53 436.35,-724.24 340.19,-777.91\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"338.41,-774.9 331.41,-782.86 341.84,-781 338.41,-774.9\"/>\n", + "<text text-anchor=\"middle\" x=\"546.75\" y=\"-654.4\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->6 -->\n", - "<g id=\"edge750\" class=\"edge\"><title>2->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.391,-558.312C712.255,-604.122 525.731,-739.531 455.383,-795.572\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"452.99,-793.005 447.395,-802.002 457.38,-798.458 452.99,-793.005\"/>\n", - "<text text-anchor=\"middle\" x=\"610.887\" y=\"-660.742\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge375\" class=\"edge\">\n", + "<title>2->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M782.39,-558.31C712.25,-604.12 525.73,-739.53 455.38,-795.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"452.99,-793 447.4,-802 457.38,-798.46 452.99,-793\"/>\n", + "<text text-anchor=\"middle\" x=\"604.39\" y=\"-665.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->5 -->\n", - "<g id=\"edge752\" class=\"edge\"><title>2->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M785.672,-561.315C735.258,-606.445 619.004,-722.632 572.079,-774.708\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"569.188,-772.693 565.164,-782.494 574.422,-777.341 569.188,-772.693\"/>\n", - "<text text-anchor=\"middle\" x=\"667.876\" y=\"-652.811\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge376\" class=\"edge\">\n", + "<title>2->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M785.67,-561.31C735.26,-606.45 619,-722.63 572.08,-774.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"569.19,-772.69 565.16,-782.49 574.42,-777.34 569.19,-772.69\"/>\n", + "<text text-anchor=\"middle\" x=\"664.38\" y=\"-656.81\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge754\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M790.983,-561.182C761.25,-596.722 704.058,-675.287 677.605,-716.776\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"674.475,-715.18 672.156,-725.518 680.416,-718.883 674.475,-715.18\"/>\n", - "<text text-anchor=\"middle\" x=\"722.294\" y=\"-625.779\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge377\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M790.98,-561.18C761.25,-596.72 704.06,-675.29 677.61,-716.78\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"674.48,-715.18 672.16,-725.52 680.42,-718.88 674.48,-715.18\"/>\n", + "<text text-anchor=\"middle\" x=\"748.79\" y=\"-627.78\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge756\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M794.283,-561.08C783.263,-578.94 769.111,-606.435 760.239,-627.056\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"756.9,-625.974 756.345,-636.554 763.377,-628.629 756.9,-625.974\"/>\n", - "<text text-anchor=\"middle\" x=\"791.261\" y=\"-596.868\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge378\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M794.28,-561.08C783.26,-578.94 769.11,-606.43 760.24,-627.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"756.9,-625.97 756.34,-636.55 763.38,-628.63 756.9,-625.97\"/>\n", + "<text text-anchor=\"middle\" x=\"791.76\" y=\"-582.87\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge758\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M836.752,-549.751C846.535,-549.896 854.511,-547.649 854.511,-543.008 854.511,-540.18 851.549,-538.241 847.022,-537.19\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"847.026,-533.676 836.752,-536.265 846.397,-540.648 847.026,-533.676\"/>\n", - "<text text-anchor=\"middle\" x=\"866.564\" y=\"-538.808\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge379\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M836.75,-549.75C846.54,-549.9 854.51,-547.65 854.51,-543.01 854.51,-540.18 851.55,-538.24 847.02,-537.19\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"847.03,-533.68 836.75,-536.26 846.4,-540.65 847.03,-533.68\"/>\n", + "<text text-anchor=\"middle\" x=\"869.01\" y=\"-539.31\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge760\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M809.815,-524.927C805.184,-466.527 776.318,-282.665 760.967,-211.677\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"764.325,-210.656 758.715,-201.669 757.496,-212.193 764.325,-210.656\"/>\n", - "<text text-anchor=\"middle\" x=\"799.391\" y=\"-362.102\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge380\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M809.82,-524.93C805.18,-466.53 776.32,-282.66 760.97,-211.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"764.32,-210.66 758.71,-201.67 757.5,-212.19 764.32,-210.66\"/>\n", + "<text text-anchor=\"middle\" x=\"770.89\" y=\"-372.1\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->20 -->\n", - "<g id=\"edge762\" class=\"edge\"><title>1->20</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M756.339,-201.571C763.345,-219.732 777.188,-247.73 789.117,-268.389\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"786.135,-270.221 794.259,-277.022 792.149,-266.64 786.135,-270.221\"/>\n", - "<text text-anchor=\"middle\" x=\"758.728\" y=\"-236.78\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge381\" class=\"edge\">\n", + "<title>1->20</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M756.34,-201.57C763.35,-219.73 777.19,-247.73 789.12,-268.39\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"786.13,-270.22 794.26,-277.02 792.15,-266.64 786.13,-270.22\"/>\n", + "<text text-anchor=\"middle\" x=\"758.23\" y=\"-223.78\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->19 -->\n", - "<g id=\"edge764\" class=\"edge\"><title>1->19</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M754.53,-201.426C763.947,-242.481 796.22,-342.794 815.351,-391.567\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"812.12,-392.913 819.106,-400.878 818.612,-390.294 812.12,-392.913\"/>\n", - "<text text-anchor=\"middle\" x=\"798.941\" y=\"-288.296\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge382\" class=\"edge\">\n", + "<title>1->19</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M754.53,-201.43C763.95,-242.48 796.22,-342.79 815.35,-391.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"812.12,-392.91 819.11,-400.88 818.61,-390.29 812.12,-392.91\"/>\n", + "<text text-anchor=\"middle\" x=\"770.44\" y=\"-285.3\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->18 -->\n", - "<g id=\"edge766\" class=\"edge\"><title>1->18</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M741.545,-165.022C730.545,-151.826 713.282,-133.982 697.781,-119.516\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"700.091,-116.886 690.349,-112.721 695.368,-122.052 700.091,-116.886\"/>\n", - "<text text-anchor=\"middle\" x=\"708.663\" y=\"-149.069\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge383\" class=\"edge\">\n", + "<title>1->18</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M741.54,-165.02C730.54,-151.83 713.28,-133.98 697.78,-119.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"700.09,-116.89 690.35,-112.72 695.37,-122.05 700.09,-116.89\"/>\n", + "<text text-anchor=\"middle\" x=\"734.16\" y=\"-146.07\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->17 -->\n", - "<g id=\"edge768\" class=\"edge\"><title>1->17</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M734.724,-165.096C701.73,-137.439 630.807,-85.5555 587.639,-57.167\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.428,-54.1557 579.134,-51.6499 585.619,-60.0283 589.428,-54.1557\"/>\n", - "<text text-anchor=\"middle\" x=\"653.182\" y=\"-118.932\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge384\" class=\"edge\">\n", + "<title>1->17</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M734.72,-165.1C701.73,-137.44 630.81,-85.56 587.64,-57.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.43,-54.16 579.13,-51.65 585.62,-60.03 589.43,-54.16\"/>\n", + "<text text-anchor=\"middle\" x=\"675.68\" y=\"-114.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->16 -->\n", - "<g id=\"edge770\" class=\"edge\"><title>1->16</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.863,-165.209C667.91,-131.739 530.579,-61.6417 464.626,-31.7294\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.988,-28.5047 455.431,-27.6168 463.13,-34.8947 465.988,-28.5047\"/>\n", - "<text text-anchor=\"middle\" x=\"601.244\" y=\"-82.2694\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge385\" class=\"edge\">\n", + "<title>1->16</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.86,-165.21C667.91,-131.74 530.58,-61.64 464.63,-31.73\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"465.99,-28.5 455.43,-27.62 463.13,-34.89 465.99,-28.5\"/>\n", + "<text text-anchor=\"middle\" x=\"609.74\" y=\"-87.27\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->15 -->\n", - "<g id=\"edge772\" class=\"edge\"><title>1->15</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.236,-170.769C648.109,-141.289 428.624,-69.8483 340.953,-45.5314\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.745,-42.1195 331.177,-42.8701 339.906,-48.8738 341.745,-42.1195\"/>\n", - "<text text-anchor=\"middle\" x=\"537.095\" y=\"-91.9503\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge386\" class=\"edge\">\n", + "<title>1->15</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.24,-170.77C648.11,-141.29 428.62,-69.85 340.95,-45.53\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"341.74,-42.12 331.18,-42.87 339.91,-48.87 341.74,-42.12\"/>\n", + "<text text-anchor=\"middle\" x=\"518.59\" y=\"-96.95\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->14 -->\n", - "<g id=\"edge774\" class=\"edge\"><title>1->14</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.255,-175.818C633.346,-156.541 334.982,-109.147 229.603,-96.8993\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.772,-93.3964 219.445,-95.7644 228.995,-100.353 229.772,-93.3964\"/>\n", - "<text text-anchor=\"middle\" x=\"476.429\" y=\"-143.158\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge387\" class=\"edge\">\n", + "<title>1->14</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.25,-175.82C633.35,-156.54 334.98,-109.15 229.6,-96.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"229.77,-93.4 219.45,-95.76 228.99,-100.35 229.77,-93.4\"/>\n", + "<text text-anchor=\"middle\" x=\"462.93\" y=\"-125.16\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->13 -->\n", - "<g id=\"edge776\" class=\"edge\"><title>1->13</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.485,-180.414C623.031,-175.45 258.748,-175.303 140.767,-179.972\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.609,-176.476 130.771,-180.408 140.914,-183.469 140.609,-176.476\"/>\n", - "<text text-anchor=\"middle\" x=\"433.126\" y=\"-184.993\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge388\" class=\"edge\">\n", + "<title>1->13</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.49,-180.41C623.03,-175.45 258.75,-175.3 140.77,-179.97\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.61,-176.48 130.77,-180.41 140.91,-183.47 140.61,-176.48\"/>\n", + "<text text-anchor=\"middle\" x=\"418.63\" y=\"-168.99\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->12 -->\n", - "<g id=\"edge778\" class=\"edge\"><title>1->12</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.296,-184.815C615.979,-196.945 209.114,-261.233 83.6835,-285.976\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.8986,-282.563 73.7851,-287.967 84.279,-289.426 82.8986,-282.563\"/>\n", - "<text text-anchor=\"middle\" x=\"403.49\" y=\"-220.195\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge389\" class=\"edge\">\n", + "<title>1->12</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.3,-184.81C615.98,-196.95 209.11,-261.23 83.68,-285.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.9,-282.56 73.79,-287.97 84.28,-289.43 82.9,-282.56\"/>\n", + "<text text-anchor=\"middle\" x=\"389.99\" y=\"-224.2\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->11 -->\n", - "<g id=\"edge780\" class=\"edge\"><title>1->11</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.448,-189.258C614.143,-219.969 192.04,-356.946 64.0215,-403.649\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.4515,-400.498 54.2798,-407.241 64.8732,-407.066 62.4515,-400.498\"/>\n", - "<text text-anchor=\"middle\" x=\"391.735\" y=\"-280.254\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge390\" class=\"edge\">\n", + "<title>1->11</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.45,-189.26C614.14,-219.97 192.04,-356.95 64.02,-403.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.45,-400.5 54.28,-407.24 64.87,-407.07 62.45,-400.5\"/>\n", + "<text text-anchor=\"middle\" x=\"387.48\" y=\"-285.25\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->10 -->\n", - "<g id=\"edge782\" class=\"edge\"><title>1->10</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.333,-194.102C615.73,-244.156 206.769,-452.348 82.5932,-521.044\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.8472,-518.01 73.8149,-525.934 84.2541,-524.125 80.8472,-518.01\"/>\n", - "<text text-anchor=\"middle\" x=\"409.963\" y=\"-365.373\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge391\" class=\"edge\">\n", + "<title>1->10</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.33,-194.1C615.73,-244.16 206.77,-452.35 82.59,-521.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.85,-518.01 73.81,-525.93 84.25,-524.12 80.85,-518.01\"/>\n", + "<text text-anchor=\"middle\" x=\"389.46\" y=\"-346.37\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->9 -->\n", - "<g id=\"edge784\" class=\"edge\"><title>1->9</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.438,-199.518C620.199,-269.619 239.57,-546.069 132.037,-630.366\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"129.59,-627.839 123.913,-636.784 133.929,-633.332 129.59,-627.839\"/>\n", - "<text text-anchor=\"middle\" x=\"436.738\" y=\"-422.742\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge392\" class=\"edge\">\n", + "<title>1->9</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M725.44,-199.52C620.2,-269.62 239.57,-546.07 132.04,-630.37\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"129.59,-627.84 123.91,-636.78 133.93,-633.33 129.59,-627.84\"/>\n", + "<text text-anchor=\"middle\" x=\"443.24\" y=\"-403.74\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->8 -->\n", - "<g id=\"edge786\" class=\"edge\"><title>1->8</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M730.687,-201.348C641.049,-283.474 302.81,-621.612 213.83,-717.903\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.101,-715.701 206.928,-725.44 216.263,-720.429 211.101,-715.701\"/>\n", - "<text text-anchor=\"middle\" x=\"483.259\" y=\"-466.426\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge393\" class=\"edge\">\n", + "<title>1->8</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M730.69,-201.35C641.05,-283.47 302.81,-621.61 213.83,-717.9\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.1,-715.7 206.93,-725.44 216.26,-720.43 211.1,-715.7\"/>\n", + "<text text-anchor=\"middle\" x=\"457.76\" y=\"-448.43\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->7 -->\n", - "<g id=\"edge788\" class=\"edge\"><title>1->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M736.037,-201.641C665.278,-289.758 389.245,-669.524 319.913,-773.907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"316.952,-772.039 314.387,-782.318 322.803,-775.882 316.952,-772.039\"/>\n", - "<text text-anchor=\"middle\" x=\"540.975\" y=\"-492.574\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge394\" class=\"edge\">\n", + "<title>1->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M736.04,-201.64C665.28,-289.76 389.24,-669.52 319.91,-773.91\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"316.95,-772.04 314.39,-782.32 322.8,-775.88 316.95,-772.04\"/>\n", + "<text text-anchor=\"middle\" x=\"513.47\" y=\"-476.57\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->6 -->\n", - "<g id=\"edge790\" class=\"edge\"><title>1->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M740.404,-201.586C688.533,-291.261 487.93,-684.697 438.821,-792.667\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"435.567,-791.37 434.674,-801.927 441.956,-794.231 435.567,-791.37\"/>\n", - "<text text-anchor=\"middle\" x=\"603.613\" y=\"-499.927\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge395\" class=\"edge\">\n", + "<title>1->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M740.4,-201.59C688.53,-291.26 487.93,-684.7 438.82,-792.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"435.57,-791.37 434.67,-801.93 441.96,-794.23 435.57,-791.37\"/>\n", + "<text text-anchor=\"middle\" x=\"575.11\" y=\"-485.93\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->5 -->\n", - "<g id=\"edge792\" class=\"edge\"><title>1->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M744.029,-201.355C709.948,-288.522 587.049,-666.279 557.95,-772.588\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"554.56,-771.721 555.362,-782.285 561.323,-773.526 554.56,-771.721\"/>\n", - "<text text-anchor=\"middle\" x=\"664.99\" y=\"-486.771\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge396\" class=\"edge\">\n", + "<title>1->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M744.03,-201.35C709.95,-288.52 587.05,-666.28 557.95,-772.59\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"554.56,-771.72 555.36,-782.28 561.32,-773.53 554.56,-771.72\"/>\n", + "<text text-anchor=\"middle\" x=\"636.49\" y=\"-475.77\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge794\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M746.993,-201.555C728.691,-283.164 675.911,-615.276 665.127,-715.06\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"661.618,-714.976 664.095,-725.277 668.582,-715.679 661.618,-714.976\"/>\n", - "<text text-anchor=\"middle\" x=\"720.06\" y=\"-456.108\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge397\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M746.99,-201.56C728.69,-283.16 675.91,-615.28 665.13,-715.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"661.62,-714.98 664.1,-725.28 668.58,-715.68 661.62,-714.98\"/>\n", + "<text text-anchor=\"middle\" x=\"691.56\" y=\"-447.11\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge796\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M749.73,-201.521C744.69,-273.572 744.489,-539.223 749.128,-626.687\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"745.635,-626.904 749.734,-636.674 752.622,-626.48 745.635,-626.904\"/>\n", - "<text text-anchor=\"middle\" x=\"736.429\" y=\"-409.904\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge398\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M749.73,-201.52C744.69,-273.57 744.49,-539.22 749.13,-626.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"745.63,-626.9 749.73,-636.67 752.62,-626.48 745.63,-626.9\"/>\n", + "<text text-anchor=\"middle\" x=\"734.93\" y=\"-402.9\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge798\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M752.239,-201.408C756.871,-259.808 785.736,-443.67 801.088,-514.659\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"797.73,-515.679 803.34,-524.666 804.559,-514.142 797.73,-515.679\"/>\n", - "<text text-anchor=\"middle\" x=\"762.663\" y=\"-355.833\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge399\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M752.24,-201.41C756.87,-259.81 785.74,-443.67 801.09,-514.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"797.73,-515.68 803.34,-524.67 804.56,-514.14 797.73,-515.68\"/>\n", + "<text text-anchor=\"middle\" x=\"762.16\" y=\"-346.83\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge800\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M779.784,-190.071C789.567,-190.216 797.543,-187.968 797.543,-183.327 797.543,-180.499 794.581,-178.56 790.054,-177.509\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.058,-173.995 779.784,-176.584 789.43,-180.967 790.058,-173.995\"/>\n", - "<text text-anchor=\"middle\" x=\"809.597\" y=\"-179.127\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", + "<g id=\"edge400\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M779.78,-190.07C789.57,-190.22 797.54,-187.97 797.54,-183.33 797.54,-180.5 794.58,-178.56 790.05,-177.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"790.06,-174 779.78,-176.58 789.43,-180.97 790.06,-174\"/>\n", + "<text text-anchor=\"middle\" x=\"812.04\" y=\"-179.63\" font-family=\"Times,serif\" font-size=\"14.00\">K20</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -5911,7 +6516,7 @@ "<Dot visualization: expr_as_graph [(\"K20\",(1..20)*(1..20))]>" ] }, - "execution_count": 96, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -5922,7 +6527,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -5931,7 +6536,7 @@ "Preference changed: DOT_ENGINE = dot\n" ] }, - "execution_count": 97, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -5956,7 +6561,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 78, "metadata": {}, "outputs": [ { @@ -5968,7 +6573,7 @@ "{(2↦1),(4↦2),(6↦3),(8↦4),(10↦5)}" ] }, - "execution_count": 98, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -5979,7 +6584,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 79, "metadata": {}, "outputs": [ { @@ -5991,7 +6596,7 @@ "{2,4,6,8,10}" ] }, - "execution_count": 99, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -6002,7 +6607,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 80, "metadata": {}, "outputs": [ { @@ -6014,7 +6619,7 @@ "{1,2,3,4,5}" ] }, - "execution_count": 100, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -6025,7 +6630,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -6037,7 +6642,7 @@ "{2,4,6,8,10}" ] }, - "execution_count": 103, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -6048,16 +6653,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 82, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{(2\\mapsto 1),(4\\mapsto 2),(6\\mapsto 3),(8\\mapsto 4),(10\\mapsto 5)\\}$" + ], + "text/plain": [ + "{(2↦1),(4↦2),(6↦3),(8↦4),(10↦5)}" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":let h {a,b| a∈1..10 ∧ b∈1..10 & b*2=a}" ] }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -6066,92 +6685,105 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"206pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 206.00 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"206pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 206.00 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 203,-310 203,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 202,-301 202,4 -4,4\"/>\n", "<!-- 10 -->\n", - "<g id=\"node1\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-306 0,-306 0,-270 54,-270 54,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-297 0,-297 0,-261 54,-261 54,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node3\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-269.614C27,-257.24 27,-240.369 27,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-226.05 27,-216.05 23.5001,-226.05 30.5001,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"30.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-260.8C27,-249.16 27,-233.55 27,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-220.18 27,-210.18 23.5,-220.18 30.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"32\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 8 -->\n", - "<g id=\"node4\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-306 72,-306 72,-270 126,-270 126,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-297 72,-297 72,-261 126,-261 126,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node6\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-216 72,-216 72,-180 126,-180 126,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-210 72,-210 72,-174 126,-174 126,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-269.614C99,-257.24 99,-240.369 99,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-226.05 99,-216.05 95.5001,-226.05 102.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"102.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-260.8C99,-249.16 99,-233.55 99,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-220.18 99,-210.18 95.5,-220.18 102.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node11\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-126 72,-126 72,-90 126,-90 126,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-179.614C99,-167.24 99,-150.369 99,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-136.05 99,-126.05 95.5001,-136.05 102.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"102.5\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-173.8C99,-162.16 99,-146.55 99,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-133.18 99,-123.18 95.5,-133.18 102.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node7\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-306 144,-306 144,-270 198,-270 198,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-297 144,-297 144,-261 198,-261 198,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node9\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-216 144,-216 144,-180 198,-180 198,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-210 144,-210 144,-174 198,-174 198,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-269.614C171,-257.24 171,-240.369 171,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-226.05 171,-216.05 167.5,-226.05 174.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"174.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-260.8C171,-249.16 171,-233.55 171,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-220.18 171,-210.18 167.5,-220.18 174.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node13\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,-0 126,-0 126,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,0 126,0 126,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-89.614C99,-77.2403 99,-60.3686 99,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.0504 99,-36.0504 95.5001,-46.0504 102.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"102.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-86.8C99,-75.16 99,-59.55 99,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "</g>\n", "</svg>" ], "text/plain": [ - "<Dot visualization: expr_as_graph [dhd={(1,\"nein\"),(2,\"nein\"),(3,\"ja\"),(4,\"nein\"),(5,\"nein\"),(6,\"ja\"),(7,\"nein\")} & h={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"h\",h)]>" + "<Dot visualization: expr_as_graph [hh={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"h\",h)]>" ] }, - "execution_count": 111, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -6162,7 +6794,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -6174,7 +6806,7 @@ "{(1↦\"nein\"),(2↦\"nein\"),(3↦\"ja\"),(4↦\"nein\"),(5↦\"nein\"),(6↦\"ja\"),(7↦\"nein\")}" ] }, - "execution_count": 104, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -6185,7 +6817,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -6197,7 +6829,7 @@ "{1,2,3,4,5,6,7}" ] }, - "execution_count": 105, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -6208,7 +6840,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -6220,7 +6852,7 @@ "{\"ja\",\"nein\"}" ] }, - "execution_count": 106, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -6231,7 +6863,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -6240,100 +6872,116 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"494pt\" height=\"134pt\"\n", - " viewBox=\"0.00 0.00 494.00 134.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 130)\">\n", + "<svg width=\"494pt\" height=\"131pt\"\n", + " viewBox=\"0.00 0.00 494.00 131.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 127)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-130 491,-130 491,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 490,-127 490,4 -4,4\"/>\n", "<!-- 7 -->\n", - "<g id=\"node1\" class=\"node\"><title>7</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-126 0,-126 0,-90 54,-90 54,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>7</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", "</g>\n", "<!-- "nein" -->\n", - "<g id=\"node3\" class=\"node\"><title>"nein"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"198,-36 144,-36 144,-0 198,-0 198,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>"nein"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"201.5,-36 140.5,-36 140.5,0 201.5,0 201.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", "</g>\n", "<!-- 7->"nein" -->\n", - "<g id=\"edge2\" class=\"edge\"><title>7->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0853,-90.4479C76.8692,-76.5243 109.644,-56.4953 134.698,-41.1844\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"136.839,-43.9781 143.547,-35.7771 133.189,-38.0052 136.839,-43.9781\"/>\n", - "<text text-anchor=\"middle\" x=\"115.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>7->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.09,-88.01C76.43,-74.82 108.4,-55.95 133.25,-41.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"135.23,-44.18 142.06,-36.08 131.67,-38.15 135.23,-44.18\"/>\n", + "<text text-anchor=\"middle\" x=\"113\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node4\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-126 360,-126 360,-90 414,-90 414,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"387\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-123 360,-123 360,-87 414,-87 414,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"387\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- "ja" -->\n", - "<g id=\"node6\" class=\"node\"><title>"ja"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-36 396,-36 396,-0 450,-0 450,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"423\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>"ja"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-36 396,-36 396,0 450,0 450,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"423\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", "</g>\n", "<!-- 6->"ja" -->\n", - "<g id=\"edge4\" class=\"edge\"><title>6->"ja"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M394.112,-89.614C399.274,-76.9977 406.348,-59.7052 412.204,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"415.478,-46.6311 416.025,-36.0504 408.999,-43.9807 415.478,-46.6311\"/>\n", - "<text text-anchor=\"middle\" x=\"411.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>6->"ja"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M394.29,-86.8C399.31,-74.93 406.09,-58.93 411.8,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"415.05,-46.75 415.73,-36.18 408.6,-44.02 415.05,-46.75\"/>\n", + "<text text-anchor=\"middle\" x=\"412\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node7\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-126 72,-126 72,-90 126,-90 126,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 5->"nein" -->\n", - "<g id=\"edge6\" class=\"edge\"><title>5->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M113.225,-89.614C123.845,-76.6338 138.515,-58.7037 150.415,-44.1595\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"153.426,-46.0064 157.05,-36.0504 148.008,-41.5737 153.426,-46.0064\"/>\n", - "<text text-anchor=\"middle\" x=\"145.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>5->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M113.57,-86.8C124.01,-74.47 138.24,-57.68 149.92,-43.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"152.66,-46.07 156.45,-36.18 147.32,-41.54 152.66,-46.07\"/>\n", + "<text text-anchor=\"middle\" x=\"145\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node9\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-126 144,-126 144,-90 198,-90 198,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-123 144,-123 144,-87 198,-87 198,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 4->"nein" -->\n", - "<g id=\"edge8\" class=\"edge\"><title>4->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-89.614C171,-77.2403 171,-60.3686 171,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.0504 171,-36.0504 167.5,-46.0504 174.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"174.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-86.8C171,-75.16 171,-59.55 171,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.18 171,-36.18 167.5,-46.18 174.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node11\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-126 432,-126 432,-90 486,-90 486,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"459\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-123 432,-123 432,-87 486,-87 486,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"459\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 3->"ja" -->\n", - "<g id=\"edge10\" class=\"edge\"><title>3->"ja"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M451.888,-89.614C446.726,-76.9977 439.652,-59.7052 433.796,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"437.001,-43.9807 429.975,-36.0504 430.522,-46.6311 437.001,-43.9807\"/>\n", - "<text text-anchor=\"middle\" x=\"447.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>3->"ja"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M451.71,-86.8C446.69,-74.93 439.91,-58.93 434.2,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"437.4,-44.02 430.27,-36.18 430.95,-46.75 437.4,-44.02\"/>\n", + "<text text-anchor=\"middle\" x=\"448\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node13\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-126 216,-126 216,-90 270,-90 270,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"243\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-123 216,-123 216,-87 270,-87 270,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 2->"nein" -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M228.775,-89.614C218.155,-76.6338 203.485,-58.7037 191.585,-44.1595\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"193.992,-41.5737 184.95,-36.0504 188.574,-46.0064 193.992,-41.5737\"/>\n", - "<text text-anchor=\"middle\" x=\"217.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M228.43,-86.8C217.99,-74.47 203.76,-57.68 192.08,-43.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"194.68,-41.54 185.55,-36.18 189.34,-46.07 194.68,-41.54\"/>\n", + "<text text-anchor=\"middle\" x=\"217\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node15\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-126 288,-126 288,-90 342,-90 342,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"315\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-123 288,-123 288,-87 342,-87 342,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"315\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 1->"nein" -->\n", - "<g id=\"edge14\" class=\"edge\"><title>1->"nein"</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M287.915,-90.4479C265.131,-76.5243 232.356,-56.4953 207.302,-41.1844\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"208.811,-38.0052 198.453,-35.7771 205.161,-43.9781 208.811,-38.0052\"/>\n", - "<text text-anchor=\"middle\" x=\"259.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>1->"nein"</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M287.91,-88.01C265.57,-74.82 233.6,-55.95 208.75,-41.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"210.33,-38.15 199.94,-36.08 206.77,-44.18 210.33,-38.15\"/>\n", + "<text text-anchor=\"middle\" x=\"257\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -6342,7 +6990,7 @@ "<Dot visualization: expr_as_graph [dhd={(1,\"nein\"),(2,\"nein\"),(3,\"ja\"),(4,\"nein\"),(5,\"nein\"),(6,\"ja\"),(7,\"nein\")} & h={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"d\",d)]>" ] }, - "execution_count": 107, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -6368,7 +7016,7 @@ }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -6380,7 +7028,7 @@ "{4,5}" ] }, - "execution_count": 112, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -6391,7 +7039,7 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -6403,7 +7051,7 @@ "{\"ja\"}" ] }, - "execution_count": 110, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -6414,16 +7062,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 90, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$" + ], + "text/plain": [ + "∅" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "d[{0}]" ] }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -6435,7 +7097,7 @@ "{(\"ja\"↦3),(\"ja\"↦6),(\"nein\"↦1),(\"nein\"↦2),(\"nein\"↦4),(\"nein\"↦5),(\"nein\"↦7)}" ] }, - "execution_count": 113, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -6446,7 +7108,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -6455,100 +7117,116 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"494pt\" height=\"134pt\"\n", - " viewBox=\"0.00 0.00 494.00 134.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 130)\">\n", + "<svg width=\"494pt\" height=\"131pt\"\n", + " viewBox=\"0.00 0.00 494.00 131.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 127)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-130 491,-130 491,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 490,-127 490,4 -4,4\"/>\n", "<!-- "nein" -->\n", - "<g id=\"node1\" class=\"node\"><title>"nein"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"198,-126 144,-126 144,-90 198,-90 198,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>"nein"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"201.5,-123 140.5,-123 140.5,-87 201.5,-87 201.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">"nein"</text>\n", "</g>\n", "<!-- 7 -->\n", - "<g id=\"node3\" class=\"node\"><title>7</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,-0 54,-0 54,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>7</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,0 54,0 54,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">7</text>\n", "</g>\n", "<!-- "nein"->7 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>"nein"->7</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M143.719,-91.5608C133.251,-85.5518 121.229,-78.5478 110.427,-72 94.5084,-62.3502 77.0995,-51.3612 62.3222,-41.901\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.8037,-38.6929 53.4982,-36.2339 60.021,-44.5828 63.8037,-38.6929\"/>\n", - "<text text-anchor=\"middle\" x=\"118.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>"nein"->7</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M140.48,-88.49C129.22,-82.59 116.42,-75.67 105,-69 90.42,-60.48 74.68,-50.54 61.18,-41.77\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.95,-38.75 52.67,-36.21 59.12,-44.61 62.95,-38.75\"/>\n", + "<text text-anchor=\"middle\" x=\"116\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node5\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,-0 126,-0 126,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,0 126,0 126,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- "nein"->5 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>"nein"->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M156.775,-89.614C146.155,-76.6338 131.485,-58.7037 119.585,-44.1595\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"121.992,-41.5737 112.95,-36.0504 116.574,-46.0064 121.992,-41.5737\"/>\n", - "<text text-anchor=\"middle\" x=\"149.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>"nein"->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M156.43,-86.8C145.99,-74.47 131.76,-57.68 120.08,-43.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"122.68,-41.54 113.55,-36.18 117.34,-46.07 122.68,-41.54\"/>\n", + "<text text-anchor=\"middle\" x=\"151\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node7\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-36 144,-36 144,-0 198,-0 198,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-36 144,-36 144,0 198,0 198,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- "nein"->4 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>"nein"->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-89.614C171,-77.2403 171,-60.3686 171,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.0504 171,-36.0504 167.5,-46.0504 174.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"178.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>"nein"->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-86.8C171,-75.16 171,-59.55 171,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-46.18 171,-36.18 167.5,-46.18 174.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"182\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node9\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-36 216,-36 216,-0 270,-0 270,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"243\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"270,-36 216,-36 216,0 270,0 270,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- "nein"->2 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>"nein"->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M185.225,-89.614C195.845,-76.6338 210.515,-58.7037 222.415,-44.1595\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"225.426,-46.0064 229.05,-36.0504 220.008,-41.5737 225.426,-46.0064\"/>\n", - "<text text-anchor=\"middle\" x=\"221.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>"nein"->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M185.57,-86.8C196.01,-74.47 210.24,-57.68 221.92,-43.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"224.66,-46.07 228.45,-36.18 219.32,-41.54 224.66,-46.07\"/>\n", + "<text text-anchor=\"middle\" x=\"223\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node11\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-36 288,-36 288,-0 342,-0 342,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"315\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"342,-36 288,-36 288,0 342,0 342,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"315\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- "nein"->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>"nein"->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M198.187,-91.7663C208.802,-85.7232 221.034,-78.6418 232,-72 247.985,-62.3177 265.453,-51.2405 280.222,-41.7252\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"282.534,-44.3978 289.031,-36.0288 278.733,-38.5196 282.534,-44.3978\"/>\n", - "<text text-anchor=\"middle\" x=\"267.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>"nein"->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M201.68,-88.74C213.2,-82.82 226.33,-75.82 238,-69 252.56,-60.49 268.24,-50.48 281.63,-41.65\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"283.67,-44.5 290.06,-36.05 279.79,-38.67 283.67,-44.5\"/>\n", + "<text text-anchor=\"middle\" x=\"273\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- "ja" -->\n", - "<g id=\"node12\" class=\"node\"><title>"ja"</title>\n", - "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-126 396,-126 396,-90 450,-90 450,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"423\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>"ja"</title>\n", + "<polygon fill=\"#fff68f\" stroke=\"#fff68f\" points=\"450,-123 396,-123 396,-87 450,-87 450,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"423\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">"ja"</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node14\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-36 360,-36 360,-0 414,-0 414,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"387\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"414,-36 360,-36 360,0 414,0 414,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"387\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- "ja"->6 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>"ja"->6</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M415.888,-89.614C410.726,-76.9977 403.652,-59.7052 397.796,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"401.001,-43.9807 393.975,-36.0504 394.522,-46.6311 401.001,-43.9807\"/>\n", - "<text text-anchor=\"middle\" x=\"416.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>"ja"->6</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M415.71,-86.8C410.69,-74.93 403.91,-58.93 398.2,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"401.4,-44.02 394.27,-36.18 394.95,-46.75 401.4,-44.02\"/>\n", + "<text text-anchor=\"middle\" x=\"419\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node16\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-36 432,-36 432,-0 486,-0 486,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"459\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"486,-36 432,-36 432,0 486,0 486,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"459\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- "ja"->3 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>"ja"->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M430.112,-89.614C435.274,-76.9977 442.348,-59.7052 448.204,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"451.478,-46.6311 452.025,-36.0504 444.999,-43.9807 451.478,-46.6311\"/>\n", - "<text text-anchor=\"middle\" x=\"452.286\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>"ja"->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M430.29,-86.8C435.31,-74.93 442.09,-58.93 447.8,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"451.05,-46.75 451.73,-36.18 444.6,-44.02 451.05,-46.75\"/>\n", + "<text text-anchor=\"middle\" x=\"454\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">d~</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -6557,7 +7235,7 @@ "<Dot visualization: expr_as_graph [dhd={(1,\"nein\"),(2,\"nein\"),(3,\"ja\"),(4,\"nein\"),(5,\"nein\"),(6,\"ja\"),(7,\"nein\")} & h={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"d~\",d~)]>" ] }, - "execution_count": 114, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } @@ -6575,7 +7253,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 93, "metadata": {}, "outputs": [ { @@ -6587,7 +7265,7 @@ "{3,6}" ] }, - "execution_count": 118, + "execution_count": 93, "metadata": {}, "output_type": "execute_result" } @@ -6598,7 +7276,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 94, "metadata": {}, "outputs": [], "source": [ @@ -6618,7 +7296,7 @@ }, { "cell_type": "code", - "execution_count": 121, + "execution_count": 95, "metadata": {}, "outputs": [ { @@ -6630,7 +7308,7 @@ "{(1↦4),(1↦8)}" ] }, - "execution_count": 121, + "execution_count": 95, "metadata": {}, "output_type": "execute_result" } @@ -6650,7 +7328,7 @@ }, { "cell_type": "code", - "execution_count": 123, + "execution_count": 96, "metadata": {}, "outputs": [ { @@ -6662,7 +7340,7 @@ "{(4↦1),(8↦2)}" ] }, - "execution_count": 123, + "execution_count": 96, "metadata": {}, "output_type": "execute_result" } @@ -6673,7 +7351,7 @@ }, { "cell_type": "code", - "execution_count": 124, + "execution_count": 97, "metadata": {}, "outputs": [ { @@ -6682,95 +7360,110 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"265pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 265.00 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"269pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 269.00 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 262,-310 262,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 265,-301 265,4 -4,4\"/>\n", "<!-- 8 -->\n", - "<g id=\"node1\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"77,-306 23,-306 23,-270 77,-270 77,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"50\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"78,-297 24,-297 24,-261 78,-261 78,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"51\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-126 0,-126 0,-90 54,-90 54,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 8->2 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>8->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.0695,-269.874C42.9155,-255.549 38.5993,-234.539 36,-216 32.2135,-188.994 29.8157,-157.913 28.4558,-136.233\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"31.9416,-135.889 27.8538,-126.114 24.954,-136.304 31.9416,-135.889\"/>\n", - "<text text-anchor=\"middle\" x=\"43\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>8->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.18,-260.82C42.54,-247.15 37.71,-227.5 35,-210 30.98,-184.09 28.95,-154.23 27.94,-133.17\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"31.43,-132.86 27.5,-123.03 24.44,-133.17 31.43,-132.86\"/>\n", + "<text text-anchor=\"middle\" x=\"44.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node4\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"113,-216 59,-216 59,-180 113,-180 113,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"86\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"117,-210 63,-210 63,-174 117,-174 117,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"90\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M57.1124,-269.614C62.2737,-256.998 69.3479,-239.705 75.2038,-225.391\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"78.4779,-226.631 79.0248,-216.05 71.999,-223.981 78.4779,-226.631\"/>\n", - "<text text-anchor=\"middle\" x=\"75.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M58.89,-260.8C64.34,-248.93 71.68,-232.93 77.86,-219.45\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"81.13,-220.72 82.12,-210.18 74.77,-217.8 81.13,-220.72\"/>\n", + "<text text-anchor=\"middle\" x=\"78\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node6\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"96,-36 42,-36 42,-0 96,-0 96,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"69\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"85,-36 31,-36 31,0 85,0 85,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"58\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M35.2978,-89.614C41.3193,-76.9977 49.5725,-59.7052 56.4045,-45.3907\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"59.7136,-46.5828 60.8623,-36.0504 53.3963,-43.5677 59.7136,-46.5828\"/>\n", - "<text text-anchor=\"middle\" x=\"55.5\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M33.27,-86.8C37.56,-75.05 43.32,-59.24 48.21,-45.84\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"51.6,-46.77 51.74,-36.18 45.02,-44.37 51.6,-46.77\"/>\n", + "<text text-anchor=\"middle\" x=\"50\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M74.3435,-179.614C65.7222,-166.755 53.8439,-149.038 44.1423,-134.568\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"46.9074,-132.407 38.4315,-126.05 41.0932,-136.305 46.9074,-132.407\"/>\n", - "<text text-anchor=\"middle\" x=\"65.5\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M77.25,-173.8C68.2,-161.59 55.9,-144.99 45.74,-131.28\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"48.5,-129.13 39.73,-123.18 42.87,-133.29 48.5,-129.13\"/>\n", + "<text text-anchor=\"middle\" x=\"68\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M84.37,-179.933C81.4125,-148.966 75.1409,-83.2989 71.591,-46.1292\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"75.0601,-45.6376 70.6251,-36.0157 68.0918,-46.3032 75.0601,-45.6376\"/>\n", - "<text text-anchor=\"middle\" x=\"87\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M86.81,-173.88C81.26,-144 69.74,-82.11 63.07,-46.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"66.44,-45.24 61.17,-36.05 59.56,-46.52 66.44,-45.24\"/>\n", + "<text text-anchor=\"middle\" x=\"87.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", "</g>\n", "<!-- 10 -->\n", - "<g id=\"node7\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"185,-306 131,-306 131,-270 185,-270 185,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"158\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"189,-297 135,-297 135,-261 189,-261 189,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node9\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"185,-216 131,-216 131,-180 185,-180 185,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"158\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"189,-210 135,-210 135,-174 189,-174 189,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M158,-269.614C158,-257.24 158,-240.369 158,-226.22\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"161.5,-226.05 158,-216.05 154.5,-226.05 161.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"161.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M162,-260.8C162,-249.16 162,-233.55 162,-220.24\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"165.5,-220.18 162,-210.18 158.5,-220.18 165.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"167\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node11\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"257,-306 203,-306 203,-270 257,-270 257,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"230\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"261,-297 207,-297 207,-261 261,-261 261,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"234\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node13\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"257,-216 203,-216 203,-180 257,-180 257,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"230\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"261,-210 207,-210 207,-174 261,-174 261,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"234\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M230,-269.614C230,-257.24 230,-240.369 230,-226.22\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"233.5,-226.05 230,-216.05 226.5,-226.05 233.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"233.5\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M234,-260.8C234,-249.16 234,-233.55 234,-220.24\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"237.5,-220.18 234,-210.18 230.5,-220.18 237.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"239\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -6779,7 +7472,7 @@ "<Dot visualization: expr_as_graph [hh={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"h\",h)]>" ] }, - "execution_count": 124, + "execution_count": 97, "metadata": {}, "output_type": "execute_result" } @@ -6790,18 +7483,191 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 98, "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.44.1 (0)\n", + " -->\n", + "<!-- Title: state Pages: 1 -->\n", + "<svg width=\"134pt\" height=\"131pt\"\n", + " viewBox=\"0.00 0.00 134.00 131.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 127)\">\n", + "<title>state</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 130,-127 130,4 -4,4\"/>\n", + "<!-- 8 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,0 54,0 54,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "</g>\n", + "<!-- 8->2 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>8->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-86.8C27,-75.16 27,-59.55 27,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-46.18 27,-36.18 23.5,-46.18 30.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"36.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,0 126,0 126,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "</g>\n", + "<!-- 4->1 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-86.8C99,-75.16 99,-59.55 99,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"108.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">hh</text>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: expr_as_graph [hh={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"hh\",(h;h))]>" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":dot expr_as_graph (\"hh\",(h;h))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 99, "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.44.1 (0)\n", + " -->\n", + "<!-- Title: state Pages: 1 -->\n", + "<svg width=\"206pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 206.00 305.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 301)\">\n", + "<title>state</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 202,-301 202,4 -4,4\"/>\n", + "<!-- 10 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-297 0,-297 0,-261 54,-261 54,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "</g>\n", + "<!-- 5 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "</g>\n", + "<!-- 10->5 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-260.8C27,-249.16 27,-233.55 27,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-220.18 27,-210.18 23.5,-220.18 30.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"32\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "</g>\n", + "<!-- 8 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-297 72,-297 72,-261 126,-261 126,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-210 72,-210 72,-174 126,-174 126,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "</g>\n", + "<!-- 8->4 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-260.8C99,-249.16 99,-233.55 99,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-220.18 99,-210.18 95.5,-220.18 102.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "</g>\n", + "<!-- 4->2 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-173.8C99,-162.16 99,-146.55 99,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-133.18 99,-123.18 95.5,-133.18 102.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "</g>\n", + "<!-- 6 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-297 144,-297 144,-261 198,-261 198,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-210 144,-210 144,-174 198,-174 198,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "</g>\n", + "<!-- 6->3 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171,-260.8C171,-249.16 171,-233.55 171,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"174.5,-220.18 171,-210.18 167.5,-220.18 174.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"176\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-36 72,-36 72,0 126,0 126,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "</g>\n", + "<!-- 2->1 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M99,-86.8C99,-75.16 99,-59.55 99,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.5,-46.18 99,-36.18 95.5,-46.18 102.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"104\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: expr_as_graph [hh={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"h\",h)]>" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":dot expr_as_graph (\"h\",(h))" ] @@ -6821,7 +7687,7 @@ }, { "cell_type": "code", - "execution_count": 125, + "execution_count": 100, "metadata": {}, "outputs": [ { @@ -6833,7 +7699,7 @@ "{(4↦1),(8↦2)}" ] }, - "execution_count": 125, + "execution_count": 100, "metadata": {}, "output_type": "execute_result" } @@ -6844,7 +7710,7 @@ }, { "cell_type": "code", - "execution_count": 126, + "execution_count": 101, "metadata": {}, "outputs": [ { @@ -6856,7 +7722,7 @@ "{(8↦1)}" ] }, - "execution_count": 126, + "execution_count": 101, "metadata": {}, "output_type": "execute_result" } @@ -6867,7 +7733,7 @@ }, { "cell_type": "code", - "execution_count": 127, + "execution_count": 102, "metadata": {}, "outputs": [ { @@ -6879,7 +7745,7 @@ "∅" ] }, - "execution_count": 127, + "execution_count": 102, "metadata": {}, "output_type": "execute_result" } @@ -6897,7 +7763,7 @@ }, { "cell_type": "code", - "execution_count": 128, + "execution_count": 103, "metadata": {}, "outputs": [ { @@ -6909,7 +7775,7 @@ "{(2↦1),(4↦1),(4↦2),(6↦3),(8↦1),(8↦2),(8↦4),(10↦5)}" ] }, - "execution_count": 128, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -6920,7 +7786,7 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 104, "metadata": {}, "outputs": [ { @@ -6929,101 +7795,117 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"299pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 299.00 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"303pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 303.00 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 296,-310 296,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 299,-301 299,4 -4,4\"/>\n", "<!-- 10 -->\n", - "<g id=\"node1\" class=\"node\"><title>10</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-306 0,-306 0,-270 54,-270 54,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>10</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-297 0,-297 0,-261 54,-261 54,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">10</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node3\" class=\"node\"><title>5</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>5</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">5</text>\n", "</g>\n", "<!-- 10->5 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>10->5</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-269.614C27,-257.24 27,-240.369 27,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-226.05 27,-216.05 23.5001,-226.05 30.5001,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"34.4473\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>10->5</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-260.8C27,-249.16 27,-233.55 27,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-220.18 27,-210.18 23.5,-220.18 30.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"38\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 8 -->\n", - "<g id=\"node4\" class=\"node\"><title>8</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"189,-306 135,-306 135,-270 189,-270 189,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"162\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>8</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"189,-297 135,-297 135,-261 189,-261 189,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"162\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">8</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node6\" class=\"node\"><title>4</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-216 72,-216 72,-180 126,-180 126,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>4</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-210 72,-210 72,-174 126,-174 126,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">4</text>\n", "</g>\n", "<!-- 8->4 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>8->4</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M147.181,-269.876C142.531,-264.288 137.475,-257.981 133.105,-252 126.782,-243.344 120.303,-233.552 114.715,-224.76\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"117.532,-222.665 109.256,-216.05 111.601,-226.382 117.532,-222.665\"/>\n", - "<text text-anchor=\"middle\" x=\"141.447\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>8->4</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M142.19,-260.83C136.58,-255.44 130.73,-249.26 126,-243 120.59,-235.84 115.61,-227.45 111.44,-219.61\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"114.44,-217.78 106.79,-210.45 108.2,-220.95 114.44,-217.78\"/>\n", + "<text text-anchor=\"middle\" x=\"137\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node8\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"181,-126 127,-126 127,-90 181,-90 181,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"185,-123 131,-123 131,-87 185,-87 185,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"158\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 8->2 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>8->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M161.233,-269.933C159.841,-238.966 156.89,-173.299 155.219,-136.129\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.71,-135.848 154.765,-126.016 151.717,-136.163 158.71,-135.848\"/>\n", - "<text text-anchor=\"middle\" x=\"166.447\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>8->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M161.6,-260.88C160.91,-231 159.47,-169.11 158.63,-133.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"162.13,-132.97 158.4,-123.05 155.13,-133.13 162.13,-132.97\"/>\n", + "<text text-anchor=\"middle\" x=\"172\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node10\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"181,-36 127,-36 127,-0 181,-0 181,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"185,-36 131,-36 131,0 185,0 185,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"158\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 8->1 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>8->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M169.31,-269.807C171.436,-264.215 173.569,-257.923 175,-252 191.981,-181.714 206.613,-160.374 190,-90 186.27,-74.1976 178.381,-57.946 170.937,-44.9857\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"173.804,-42.9612 165.66,-36.1837 167.8,-46.5603 173.804,-42.9612\"/>\n", - "<text text-anchor=\"middle\" x=\"205.447\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>8->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M168.37,-260.92C170.49,-255.22 172.85,-248.84 175,-243 180.38,-228.35 183.68,-225.25 187,-210 198.66,-156.5 202.03,-141.16 194,-87 191.75,-71.84 190.89,-67.69 184,-54 182.38,-50.79 180.48,-47.57 178.44,-44.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"181.11,-42.18 172.48,-36.03 175.4,-46.22 181.11,-42.18\"/>\n", + "<text text-anchor=\"middle\" x=\"209\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M109.866,-179.614C117.903,-166.755 128.976,-149.038 138.02,-134.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"141.011,-136.385 143.343,-126.05 135.075,-132.675 141.011,-136.385\"/>\n", - "<text text-anchor=\"middle\" x=\"139.447\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M107.01,-173.72C111.93,-163.79 118.68,-151.29 126,-141 128.47,-137.53 131.25,-134.03 134.11,-130.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"136.81,-132.89 140.83,-123.09 131.57,-128.24 136.81,-132.89\"/>\n", + "<text text-anchor=\"middle\" x=\"137\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M96.6879,-179.769C94.4498,-158.152 92.7399,-120.248 103.105,-90 108.913,-73.0524 120.197,-56.6281 130.667,-43.8525\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"133.529,-45.8913 137.365,-36.0151 128.207,-41.3438 133.529,-45.8913\"/>\n", - "<text text-anchor=\"middle\" x=\"111.447\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M95.68,-173.78C92.37,-152.61 89.18,-115.92 100,-87 106.15,-70.55 118.21,-55.35 129.74,-43.51\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"132.47,-45.73 137.17,-36.24 127.58,-40.73 132.47,-45.73\"/>\n", + "<text text-anchor=\"middle\" x=\"111\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M154,-89.614C154,-77.2403 154,-60.3686 154,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"157.5,-46.0504 154,-36.0504 150.5,-46.0504 157.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"161.447\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M158,-86.8C158,-75.16 158,-59.55 158,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"161.5,-46.18 158,-36.18 154.5,-46.18 161.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"169\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "<!-- 6 -->\n", - "<g id=\"node11\" class=\"node\"><title>6</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"291,-306 237,-306 237,-270 291,-270 291,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"264\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"295,-297 241,-297 241,-261 295,-261 295,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"268\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">6</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node13\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"291,-216 237,-216 237,-180 291,-180 291,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"264\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"295,-210 241,-210 241,-174 295,-174 295,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"268\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 6->3 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>6->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M264,-269.614C264,-257.24 264,-240.369 264,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"267.5,-226.05 264,-216.05 260.5,-226.05 267.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"271.447\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M268,-260.8C268,-249.16 268,-233.55 268,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"271.5,-220.18 268,-210.18 264.5,-220.18 271.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"279\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">h+</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -7032,7 +7914,7 @@ "<Dot visualization: expr_as_graph [hh={(2,1),(4,2),(6,3),(8,4),(10,5)}(\"h+\",closure1(h))]>" ] }, - "execution_count": 129, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } @@ -7043,7 +7925,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 105, "metadata": {}, "outputs": [], "source": [ @@ -7059,7 +7941,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 106, "metadata": {}, "outputs": [ { @@ -7071,7 +7953,7 @@ "{(∅↦{1}),(∅↦{2}),(∅↦{3}),({1}↦{1,2}),({1}↦{1,3}),({1,2}↦{1,2,3}),({1,3}↦{1,2,3}),({2}↦{1,2}),({2}↦{2,3}),({2,3}↦{1,2,3}),({3}↦{1,3}),({3}↦{2,3})}" ] }, - "execution_count": 131, + "execution_count": 106, "metadata": {}, "output_type": "execute_result" } @@ -7082,7 +7964,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 107, "metadata": {}, "outputs": [ { @@ -7091,7 +7973,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = false\n" ] }, - "execution_count": 132, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -7102,7 +7984,7 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 108, "metadata": {}, "outputs": [ { @@ -7111,125 +7993,145 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"261pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 260.64 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"315pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 315.17 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 257.637,-310 257.637,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 311.17,-301 311.17,4 -4,4\"/>\n", "<!-- \\{3\\} -->\n", - "<g id=\"node1\" class=\"node\"><title>\\{3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"78.1929,-216 24.1929,-216 24.1929,-180 78.1929,-180 78.1929,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"51.1929\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>\\{3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"87.17,-210 33.17,-210 33.17,-174 87.17,-174 87.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"60.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", "</g>\n", "<!-- \\{2,3\\} -->\n", - "<g id=\"node3\" class=\"node\"><title>\\{2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"151.193,-126 97.1929,-126 97.1929,-90 151.193,-90 151.193,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"124.193\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>\\{2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"175.67,-123 118.67,-123 118.67,-87 175.67,-87 175.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"147.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{2,3\\} -->\n", - "<g id=\"edge2\" class=\"edge\"><title>\\{3\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M47.0235,-179.946C45.3038,-168.863 45.0413,-154.566 51.7483,-144 52.0451,-143.532 69.8441,-134.93 87.7229,-126.372\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.4743,-129.414 96.9873,-121.944 86.4556,-123.099 89.4743,-129.414\"/>\n", - "<text text-anchor=\"middle\" x=\"65.4152\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>\\{3\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M58.53,-173.62C58.47,-163.17 60.11,-150.16 67.17,-141 78.24,-126.64 88.33,-130 108.99,-123\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.49,-126.17 118.53,-119.28 107.94,-119.65 110.49,-126.17\"/>\n", + "<text text-anchor=\"middle\" x=\"84.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\} -->\n", - "<g id=\"node5\" class=\"node\"><title>\\{1,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"79.1929,-126 25.1929,-126 25.1929,-90 79.1929,-90 79.1929,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"52.1929\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>\\{1,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"100.67,-123 43.67,-123 43.67,-87 100.67,-87 100.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"72.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{1,3\\} -->\n", - "<g id=\"edge4\" class=\"edge\"><title>\\{3\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M24.1554,-183.975C15.7282,-178.453 7.42392,-171.146 2.74827,-162 -0.893163,-154.877 -0.927551,-151.106 2.74827,-144 6.02749,-137.661 11.0425,-132.224 16.6425,-127.655\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"19.037,-130.245 25.132,-121.579 14.963,-124.553 19.037,-130.245\"/>\n", - "<text text-anchor=\"middle\" x=\"16.4152\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>\\{3\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.85,-180.68C13.62,-171.72 -7.02,-157.6 3.17,-141 10.1,-129.71 21.94,-121.92 33.86,-116.62\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"35.34,-119.8 43.36,-112.88 32.77,-113.29 35.34,-119.8\"/>\n", + "<text text-anchor=\"middle\" x=\"20.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2,3\\} -->\n", - "<g id=\"node7\" class=\"node\"><title>\\{1,2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.77,-36 95.616,-36 95.616,-0 152.77,-0 152.77,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"124.193\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>\\{1,2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"182.67,-36 111.67,-36 111.67,0 182.67,0 182.67,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"147.17\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", "</g>\n", "<!-- \\{2,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge6\" class=\"edge\"><title>\\{2,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M124.193,-89.614C124.193,-77.2403 124.193,-60.3686 124.193,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"127.693,-46.0504 124.193,-36.0504 120.693,-46.0504 127.693,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"137.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>\\{2,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M147.17,-86.8C147.17,-75.16 147.17,-59.55 147.17,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"150.67,-46.18 147.17,-36.18 143.67,-46.18 150.67,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"164.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge12\" class=\"edge\"><title>\\{1,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M65.4484,-89.6378C73.503,-79.2032 84.0678,-65.719 93.7483,-54 96.4602,-50.717 99.3507,-47.297 102.23,-43.9367\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"104.944,-46.1494 108.84,-36.2969 99.6503,-41.5693 104.944,-46.1494\"/>\n", - "<text text-anchor=\"middle\" x=\"106.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>\\{1,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M83.31,-86.64C90.02,-76.69 99.02,-64.19 108.17,-54 111.49,-50.3 115.17,-46.59 118.9,-43.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"121.54,-45.36 126.55,-36.02 116.81,-40.2 121.54,-45.36\"/>\n", + "<text text-anchor=\"middle\" x=\"125.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{2\\} -->\n", - "<g id=\"node8\" class=\"node\"><title>\\{2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"225.193,-216 171.193,-216 171.193,-180 225.193,-180 225.193,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"198.193\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>\\{2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"261.17,-210 207.17,-210 207.17,-174 261.17,-174 261.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"234.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{2,3\\} -->\n", - "<g id=\"edge8\" class=\"edge\"><title>\\{2\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M193.88,-179.893C190.447,-168.788 184.775,-154.485 176.193,-144 171.549,-138.326 165.748,-133.215 159.72,-128.762\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"161.678,-125.861 151.447,-123.109 157.729,-131.641 161.678,-125.861\"/>\n", - "<text text-anchor=\"middle\" x=\"199.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>\\{2\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M229.66,-173.64C226.25,-163.2 220.66,-150.2 212.17,-141 207.77,-136.24 196.69,-129.77 184.9,-123.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"186.35,-120.5 175.84,-119.15 183.22,-126.76 186.35,-120.5\"/>\n", + "<text text-anchor=\"middle\" x=\"239.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\} -->\n", - "<g id=\"node11\" class=\"node\"><title>\\{1,2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"223.193,-126 169.193,-126 169.193,-90 223.193,-90 223.193,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"196.193\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>\\{1,2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"250.67,-123 193.67,-123 193.67,-87 250.67,-87 250.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"222.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{1,2\\} -->\n", - "<g id=\"edge10\" class=\"edge\"><title>\\{2\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M215,-179.823C219.142,-174.525 223.014,-168.392 225.193,-162 227.774,-154.428 227.906,-151.526 225.193,-144 224.006,-140.708 222.361,-137.506 220.451,-134.463\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"223.255,-132.368 214.529,-126.358 217.603,-136.497 223.255,-132.368\"/>\n", - "<text text-anchor=\"middle\" x=\"239.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>\\{2\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M258.3,-173.8C268.19,-164.53 276.08,-152.63 270.17,-141 267.41,-135.58 263.38,-130.8 258.81,-126.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"260.75,-123.73 250.73,-120.27 256.41,-129.22 260.75,-123.73\"/>\n", + "<text text-anchor=\"middle\" x=\"289.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge14\" class=\"edge\"><title>\\{1,2\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M182.74,-89.68C174.58,-79.2604 163.901,-65.7771 154.193,-54 151.501,-50.7347 148.642,-47.3251 145.799,-43.9702\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"148.435,-41.668 139.28,-36.3348 143.111,-46.2129 148.435,-41.668\"/>\n", - "<text text-anchor=\"middle\" x=\"181.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>\\{1,2\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M211.03,-86.64C204.32,-76.69 195.32,-64.19 186.17,-54 182.85,-50.3 179.17,-46.59 175.44,-43.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.53,-40.2 167.79,-36.02 172.79,-45.36 177.53,-40.2\"/>\n", + "<text text-anchor=\"middle\" x=\"214.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\} -->\n", - "<g id=\"node14\" class=\"node\"><title>\\{1\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.193,-216 98.1929,-216 98.1929,-180 152.193,-180 152.193,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"125.193\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>\\{1\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"178.17,-210 124.17,-210 124.17,-174 178.17,-174 178.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"151.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,3\\} -->\n", - "<g id=\"edge16\" class=\"edge\"><title>\\{1\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.77,-179.614C99.9021,-166.512 84.8505,-148.368 72.7263,-133.753\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"75.4154,-131.512 66.337,-126.05 70.0278,-135.982 75.4154,-131.512\"/>\n", - "<text text-anchor=\"middle\" x=\"108.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M135.18,-173.8C123.62,-161.36 107.83,-144.36 94.94,-130.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"97.5,-128.12 88.13,-123.18 92.38,-132.88 97.5,-128.12\"/>\n", + "<text text-anchor=\"middle\" x=\"133.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,2\\} -->\n", - "<g id=\"edge18\" class=\"edge\"><title>\\{1\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.79,-179.564C134.882,-168.597 141.21,-154.571 149.748,-144 153.073,-139.884 156.983,-135.986 161.099,-132.39\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"163.591,-134.876 169.169,-125.868 159.191,-129.432 163.591,-134.876\"/>\n", - "<text text-anchor=\"middle\" x=\"162.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.95,-173.69C162.45,-163.51 169.03,-150.77 177.17,-141 180.49,-137.02 184.34,-133.19 188.35,-129.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.72,-132.22 196.2,-123.15 186.26,-126.83 190.72,-132.22\"/>\n", + "<text text-anchor=\"middle\" x=\"194.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\} -->\n", - "<g id=\"node17\" class=\"node\"><title>\\{\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.193,-306 98.1929,-306 98.1929,-270 152.193,-270 152.193,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"125.193\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>\\{\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"178.17,-297 124.17,-297 124.17,-261 178.17,-261 178.17,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"151.17\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", "</g>\n", "<!-- \\{\\}->\\{3\\} -->\n", - "<g id=\"edge20\" class=\"edge\"><title>\\{\\}->\\{3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.231,-269.993C105.269,-264.302 99.7402,-257.904 94.7483,-252 87.0945,-242.948 78.8083,-232.923 71.5385,-224.05\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"74.2326,-221.816 65.1951,-216.287 68.8119,-226.245 74.2326,-221.816\"/>\n", - "<text text-anchor=\"middle\" x=\"107.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>\\{\\}->\\{3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M131.61,-260.68C125.36,-255.09 118.44,-248.82 112.17,-243 103.32,-234.78 93.75,-225.65 85.27,-217.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"87.46,-214.72 77.83,-210.28 82.59,-219.75 87.46,-214.72\"/>\n", + "<text text-anchor=\"middle\" x=\"129.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{2\\} -->\n", - "<g id=\"edge22\" class=\"edge\"><title>\\{\\}->\\{2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M139.934,-269.989C144.823,-264.297 150.272,-257.9 155.193,-252 162.669,-243.035 170.759,-233.122 177.883,-224.317\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"180.811,-226.262 184.366,-216.282 175.363,-221.867 180.811,-226.262\"/>\n", - "<text text-anchor=\"middle\" x=\"182.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>\\{\\}->\\{2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171.03,-260.99C177.3,-255.41 184.15,-249.08 190.17,-243 197.98,-235.11 206.12,-226.11 213.25,-217.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"216.11,-219.97 219.98,-210.11 210.8,-215.41 216.11,-219.97\"/>\n", + "<text text-anchor=\"middle\" x=\"220.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1\\} -->\n", - "<g id=\"edge24\" class=\"edge\"><title>\\{\\}->\\{1\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.193,-269.614C125.193,-257.24 125.193,-240.369 125.193,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.693,-226.05 125.193,-216.05 121.693,-226.05 128.693,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"138.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>\\{\\}->\\{1\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M151.17,-260.8C151.17,-249.16 151.17,-233.55 151.17,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"154.67,-220.18 151.17,-210.18 147.67,-220.18 154.67,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"168.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -7238,7 +8140,7 @@ "<Dot visualization: expr_as_graph [sub1sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"sub1\",sub1)]>" ] }, - "execution_count": 133, + "execution_count": 108, "metadata": {}, "output_type": "execute_result" } @@ -7249,7 +8151,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 109, "metadata": {}, "outputs": [ { @@ -7258,167 +8160,194 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"470pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 470.44 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"531pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 531.00 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 467.445,-310 467.445,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 527,-301 527,4 -4,4\"/>\n", "<!-- \\{3\\} -->\n", - "<g id=\"node1\" class=\"node\"><title>\\{3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"197,-216 143,-216 143,-180 197,-180 197,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"170\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>\\{3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"210,-210 156,-210 156,-174 210,-174 210,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"183\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", "</g>\n", "<!-- \\{2,3\\} -->\n", - "<g id=\"node3\" class=\"node\"><title>\\{2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"123,-126 69,-126 69,-90 123,-90 123,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"96\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>\\{2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"127.5,-123 70.5,-123 70.5,-87 127.5,-87 127.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{2,3\\} -->\n", - "<g id=\"edge2\" class=\"edge\"><title>\\{3\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M143.178,-179.965C136.246,-174.754 129.164,-168.629 123.555,-162 116.964,-154.209 111.368,-144.576 106.976,-135.669\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.069,-134.017 102.694,-126.41 103.715,-136.955 110.069,-134.017\"/>\n", - "<text text-anchor=\"middle\" x=\"137.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>\\{3\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M155.73,-179.03C144.85,-173.26 132.84,-165.5 124,-156 117.73,-149.26 112.67,-140.65 108.79,-132.48\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"111.97,-131.01 104.77,-123.23 105.55,-133.79 111.97,-131.01\"/>\n", + "<text text-anchor=\"middle\" x=\"141.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2,3\\} -->\n", - "<g id=\"node5\" class=\"node\"><title>\\{1,2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"266.577,-36 209.423,-36 209.423,-0 266.577,-0 266.577,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"238\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>\\{1,2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"291.5,-36 220.5,-36 220.5,0 291.5,0 291.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"256\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge4\" class=\"edge\"><title>\\{3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M167.547,-179.95C165.15,-158.192 163.421,-119.805 175.555,-90 182.851,-72.0797 196.666,-55.6101 209.45,-43.0542\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.92,-45.5358 216.801,-36.1323 207.122,-40.4395 211.92,-45.5358\"/>\n", - "<text text-anchor=\"middle\" x=\"188.222\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>\\{3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M179,-173.95C174.87,-152.63 170.61,-115.48 183,-87 190.74,-69.21 205.68,-53.97 220.04,-42.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.54,-44.95 228.37,-36.11 218.3,-39.38 222.54,-44.95\"/>\n", + "<text text-anchor=\"middle\" x=\"200.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\} -->\n", - "<g id=\"node7\" class=\"node\"><title>\\{1,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"371,-126 317,-126 317,-90 371,-90 371,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"344\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>\\{1,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"404.5,-123 347.5,-123 347.5,-87 404.5,-87 404.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"376\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{1,3\\} -->\n", - "<g id=\"edge6\" class=\"edge\"><title>\\{3\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M197.035,-186.304C203.214,-184.057 209.79,-181.82 216,-180 251.807,-169.508 265.921,-181.057 298,-162 304.426,-158.183 315.258,-145.851 324.797,-134.043\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"327.653,-136.074 331.124,-126.063 322.168,-131.725 327.653,-136.074\"/>\n", - "<text text-anchor=\"middle\" x=\"329.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>\\{3\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M210.07,-181.27C217.75,-178.7 226.15,-176.08 234,-174 273.86,-163.46 288.53,-175.24 325,-156 331.55,-152.55 343.09,-141.43 353.54,-130.56\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"356.2,-132.84 360.52,-123.16 351.11,-128.03 356.2,-132.84\"/>\n", + "<text text-anchor=\"middle\" x=\"360.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{2,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge8\" class=\"edge\"><title>\\{2,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M100.972,-89.9363C105.201,-78.2675 112.395,-63.2874 123.555,-54 144.936,-36.2072 175.252,-27.4522 199.312,-23.1483\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.876,-26.6026 209.195,-21.5629 198.767,-19.691 199.876,-26.6026\"/>\n", - "<text text-anchor=\"middle\" x=\"137.222\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>\\{2,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M103.58,-86.83C107.35,-75.92 113.76,-62.33 124,-54 148.29,-34.23 182.67,-25.54 210.25,-21.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"210.94,-25.21 220.46,-20.54 210.11,-18.26 210.94,-25.21\"/>\n", + "<text text-anchor=\"middle\" x=\"141.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge16\" class=\"edge\"><title>\\{1,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M323.31,-89.8238C307.114,-76.3774 284.407,-57.5263 266.491,-42.6529\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"268.567,-39.8275 258.637,-36.1329 264.096,-45.2134 268.567,-39.8275\"/>\n", - "<text text-anchor=\"middle\" x=\"313.222\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>\\{1,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M351.72,-86.8C333.5,-73.9 308.38,-56.1 288.44,-41.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"290.43,-39.1 280.25,-36.18 286.38,-44.81 290.43,-39.1\"/>\n", + "<text text-anchor=\"middle\" x=\"341.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{2\\} -->\n", - "<g id=\"node9\" class=\"node\"><title>\\{2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>\\{2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{2,3\\} -->\n", - "<g id=\"edge10\" class=\"edge\"><title>\\{2\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M31.8611,-179.554C35.5078,-168.582 41.3007,-154.556 49.5554,-144 52.8149,-139.832 56.6862,-135.904 60.7823,-132.292\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.2762,-134.775 68.8344,-125.755 58.8645,-129.34 63.2762,-134.775\"/>\n", - "<text text-anchor=\"middle\" x=\"63.2223\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>\\{2\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M28.6,-173.84C30.3,-163.47 33.79,-150.47 41,-141 46.43,-133.87 53.76,-127.88 61.38,-122.99\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.5,-125.81 70.37,-117.75 59.97,-119.76 63.5,-125.81\"/>\n", + "<text text-anchor=\"middle\" x=\"58.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{2\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge12\" class=\"edge\"><title>\\{2\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M23.1487,-179.796C19.1041,-157.18 15.5597,-117.147 33.5554,-90 69.6268,-35.5863 150.912,-22.3289 199.42,-19.427\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.716,-22.9169 209.538,-18.9433 199.382,-15.9249 199.716,-22.9169\"/>\n", - "<text text-anchor=\"middle\" x=\"47.2223\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>\\{2\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M21.33,-173.83C15.16,-151.7 8.36,-113 26,-87 46.72,-56.46 149,-35.62 209.97,-25.68\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"210.79,-29.09 220.12,-24.06 209.69,-22.18 210.79,-29.09\"/>\n", + "<text text-anchor=\"middle\" x=\"43.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\} -->\n", - "<g id=\"node13\" class=\"node\"><title>\\{1,2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"265,-126 211,-126 211,-90 265,-90 265,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"238\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>\\{1,2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"284.5,-123 227.5,-123 227.5,-87 284.5,-87 284.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"256\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{1,2\\} -->\n", - "<g id=\"edge14\" class=\"edge\"><title>\\{2\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0863,-184.938C58.677,-183.135 63.4354,-181.41 68,-180 105.31,-168.471 117.802,-176.651 154,-162 172.706,-154.429 191.864,-142.703 207.152,-132.205\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"209.511,-134.824 215.673,-126.205 205.481,-129.1 209.511,-134.824\"/>\n", - "<text text-anchor=\"middle\" x=\"200.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>\\{2\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.06,-178.86C58.66,-177.07 63.42,-175.37 68,-174 109.18,-161.71 122.49,-170.34 163,-156 182.83,-148.98 203.57,-138.21 220.42,-128.46\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.52,-131.28 229.35,-123.17 218.96,-125.25 222.52,-131.28\"/>\n", + "<text text-anchor=\"middle\" x=\"212.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge18\" class=\"edge\"><title>\\{1,2\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M238,-89.614C238,-77.2403 238,-60.3686 238,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"241.5,-46.0504 238,-36.0504 234.5,-46.0504 241.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"251.222\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>\\{1,2\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M256,-86.8C256,-75.16 256,-59.55 256,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"259.5,-46.18 256,-36.18 252.5,-46.18 259.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"273.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\} -->\n", - "<g id=\"node16\" class=\"node\"><title>\\{1\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"355,-216 301,-216 301,-180 355,-180 355,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"328\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>\\{1\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"393,-210 339,-210 339,-174 393,-174 393,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"366\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge20\" class=\"edge\"><title>\\{1\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M355.07,-184.33C363.916,-178.772 372.796,-171.352 378,-162 393.566,-134.027 394.595,-118.492 380,-90 360.271,-51.485 311.332,-33.5069 276.431,-25.362\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"277.062,-21.9174 266.548,-23.2271 275.584,-28.7596 277.062,-21.9174\"/>\n", - "<text text-anchor=\"middle\" x=\"403.222\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M393.19,-181.3C404.53,-175.76 416.54,-167.55 423,-156 431.54,-140.74 432.06,-114.52 414,-87 389.36,-49.46 339.16,-32.56 301.92,-25\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"302.27,-21.51 291.79,-23.11 300.98,-28.39 302.27,-21.51\"/>\n", + "<text text-anchor=\"middle\" x=\"445.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,3\\} -->\n", - "<g id=\"edge22\" class=\"edge\"><title>\\{1\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M339.475,-179.902C342.54,-174.419 345.434,-168.165 347,-162 349.073,-153.835 349.284,-144.744 348.697,-136.429\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"352.171,-136.001 347.608,-126.44 345.212,-136.76 352.171,-136.001\"/>\n", - "<text text-anchor=\"middle\" x=\"361.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M376.28,-173.77C379.02,-168.28 381.61,-162.06 383,-156 384.68,-148.68 384.46,-140.67 383.41,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"386.82,-132.42 381.5,-123.26 379.94,-133.74 386.82,-132.42\"/>\n", + "<text text-anchor=\"middle\" x=\"401.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,2\\} -->\n", - "<g id=\"edge24\" class=\"edge\"><title>\\{1\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M300.943,-183.562C290.987,-177.798 280.074,-170.44 271.555,-162 263.664,-154.182 256.734,-144.18 251.252,-134.976\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"254.233,-133.137 246.271,-126.148 248.137,-136.577 254.233,-133.137\"/>\n", - "<text text-anchor=\"middle\" x=\"284.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M338.64,-182.51C323.19,-176.77 304.19,-168.02 290,-156 282.03,-149.25 275.12,-140.2 269.65,-131.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"272.64,-129.82 264.49,-123.05 266.63,-133.43 272.64,-129.82\"/>\n", + "<text text-anchor=\"middle\" x=\"307.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\} -->\n", - "<g id=\"node20\" class=\"node\"><title>\\{\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"265,-306 211,-306 211,-270 265,-270 265,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"238\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>\\{\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"283,-297 229,-297 229,-261 283,-261 283,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"256\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", "</g>\n", "<!-- \\{\\}->\\{3\\} -->\n", - "<g id=\"edge26\" class=\"edge\"><title>\\{\\}->\\{3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M215.15,-269.849C208.982,-264.553 202.62,-258.413 197.555,-252 191.23,-243.991 185.696,-234.308 181.28,-225.421\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"184.368,-223.764 176.942,-216.207 178.035,-226.746 184.368,-223.764\"/>\n", - "<text text-anchor=\"middle\" x=\"210.222\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>\\{\\}->\\{3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M228.8,-262.2C221.08,-256.81 213.12,-250.28 207,-243 201.27,-236.19 196.55,-227.78 192.86,-219.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"196.01,-218.27 188.87,-210.45 189.57,-221.02 196.01,-218.27\"/>\n", + "<text text-anchor=\"middle\" x=\"224.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{2,3\\} -->\n", - "<g id=\"edge28\" class=\"edge\"><title>\\{\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M210.898,-280.359C180.301,-271.324 131.654,-251.995 107.555,-216 91.8517,-192.544 90.6583,-159.509 92.3181,-136.369\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"95.823,-136.481 93.2751,-126.197 88.8537,-135.825 95.823,-136.481\"/>\n", - "<text text-anchor=\"middle\" x=\"121.222\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>\\{\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M228.96,-273.34C195.64,-266.07 139.98,-248.62 112,-210 95.96,-187.87 94.27,-155.9 95.61,-133.26\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"99.1,-133.54 96.43,-123.28 92.12,-132.96 99.1,-133.54\"/>\n", + "<text text-anchor=\"middle\" x=\"129.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge30\" class=\"edge\"><title>\\{\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M265.311,-285.247C305.834,-280.98 380.482,-266.325 412,-216 441.783,-168.444 445.582,-139.942 420,-90 393.677,-38.6105 321.879,-24.171 276.728,-20.2638\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"276.925,-16.7689 266.696,-19.53 276.414,-23.7503 276.925,-16.7689\"/>\n", - "<text text-anchor=\"middle\" x=\"449.222\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>\\{\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M283.15,-278.74C329.94,-278.34 424.61,-269.75 465,-210 495.62,-164.7 495.45,-133.69 467,-87 449.6,-58.46 358.68,-37.34 302.02,-26.72\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"302.33,-23.22 291.86,-24.86 301.07,-30.1 302.33,-23.22\"/>\n", + "<text text-anchor=\"middle\" x=\"505.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1,3\\} -->\n", - "<g id=\"edge34\" class=\"edge\"><title>\\{\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M265.242,-279.991C295.081,-270.742 341.661,-251.338 364,-216 381.419,-188.445 390.257,-174.207 378,-144 376.579,-140.497 374.62,-137.152 372.354,-134.016\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"374.919,-131.628 365.797,-126.238 369.567,-136.14 374.919,-131.628\"/>\n", - "<text text-anchor=\"middle\" x=\"395.222\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>\\{\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M283.09,-273.23C316.56,-265.84 372.64,-248.27 402,-210 421.51,-184.57 437.38,-169.65 423,-141 420.49,-136 416.89,-131.53 412.78,-127.6\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"414.89,-124.8 404.97,-121.1 410.42,-130.19 414.89,-124.8\"/>\n", + "<text text-anchor=\"middle\" x=\"443.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{2\\} -->\n", - "<g id=\"edge32\" class=\"edge\"><title>\\{\\}->\\{2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M210.708,-285.076C164.627,-281.325 74.0197,-271.624 49.5554,-252 41.3922,-245.452 36.1339,-235.401 32.7696,-225.805\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"36.1018,-224.731 29.9069,-216.136 29.3898,-226.718 36.1018,-224.731\"/>\n", - "<text text-anchor=\"middle\" x=\"63.2223\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>\\{\\}->\\{2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M228.69,-277.12C177.15,-274.9 68.28,-267.39 41,-243 34.5,-237.19 30.92,-228.64 28.97,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"32.41,-219.57 27.32,-210.27 25.5,-220.71 32.41,-219.57\"/>\n", + "<text text-anchor=\"middle\" x=\"58.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1,2\\} -->\n", - "<g id=\"edge36\" class=\"edge\"><title>\\{\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M238,-269.933C238,-238.966 238,-173.299 238,-136.129\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"241.5,-136.016 238,-126.016 234.5,-136.016 241.5,-136.016\"/>\n", - "<text text-anchor=\"middle\" x=\"251.222\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>\\{\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M256,-260.88C256,-231 256,-169.11 256,-133.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"259.5,-133.05 256,-123.05 252.5,-133.05 259.5,-133.05\"/>\n", + "<text text-anchor=\"middle\" x=\"273.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1\\} -->\n", - "<g id=\"edge38\" class=\"edge\"><title>\\{\\}->\\{1\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M255.781,-269.614C269.305,-256.391 288.081,-238.032 303.099,-223.348\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"305.859,-225.544 310.562,-216.05 300.965,-220.539 305.859,-225.544\"/>\n", - "<text text-anchor=\"middle\" x=\"304.222\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>\\{\\}->\\{1\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M278.26,-260.8C294.81,-248.01 317.58,-230.42 335.77,-216.36\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"338,-219.06 343.77,-210.18 333.72,-213.52 338,-219.06\"/>\n", + "<text text-anchor=\"middle\" x=\"335.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -7427,7 +8356,7 @@ "<Dot visualization: expr_as_graph [sub1sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"sub1\",closure1(sub1))]>" ] }, - "execution_count": 134, + "execution_count": 109, "metadata": {}, "output_type": "execute_result" } @@ -7451,7 +8380,7 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 110, "metadata": {}, "outputs": [ { @@ -7463,7 +8392,7 @@ "{1,2,3}" ] }, - "execution_count": 135, + "execution_count": 110, "metadata": {}, "output_type": "execute_result" } @@ -7474,7 +8403,7 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -7486,7 +8415,7 @@ "{(1↦2),(2↦3)}" ] }, - "execution_count": 136, + "execution_count": 111, "metadata": {}, "output_type": "execute_result" } @@ -7497,7 +8426,7 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 112, "metadata": {}, "outputs": [ { @@ -7506,40 +8435,45 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"62pt\" height=\"224pt\"\n", - " viewBox=\"0.00 0.00 62.00 224.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 220)\">\n", + "<svg width=\"62pt\" height=\"218pt\"\n", + " viewBox=\"0.00 0.00 62.00 218.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 214)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-220 59,-220 59,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-214 58,-214 58,4 -4,4\"/>\n", "<!-- 2 -->\n", - "<g id=\"node1\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-126 0,-126 0,-90 54,-90 54,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node3\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,-0 54,-0 54,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,0 54,0 54,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-89.614C27,-77.2403 27,-60.3686 27,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-46.0504 27,-36.0504 23.5001,-46.0504 30.5001,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"29.3303\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">r</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-86.8C27,-75.16 27,-59.55 27,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-46.18 27,-36.18 23.5,-46.18 30.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">r</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node4\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-179.614C27,-167.24 27,-150.369 27,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-136.05 27,-126.05 23.5001,-136.05 30.5001,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"29.3303\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">r</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-173.8C27,-162.16 27,-146.55 27,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-133.18 27,-123.18 23.5,-133.18 30.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"30.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">r</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -7548,7 +8482,7 @@ "<Dot visualization: expr_as_graph [Arsub1A={1,2,3} & r={(1,2),(2,3)} & sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"r\",r)]>" ] }, - "execution_count": 137, + "execution_count": 112, "metadata": {}, "output_type": "execute_result" } @@ -7559,7 +8493,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 113, "metadata": {}, "outputs": [ { @@ -7571,7 +8505,7 @@ "{(1↦3)}" ] }, - "execution_count": 138, + "execution_count": 113, "metadata": {}, "output_type": "execute_result" } @@ -7589,7 +8523,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 114, "metadata": {}, "outputs": [ { @@ -7601,7 +8535,7 @@ "{(1↦1),(2↦2),(3↦3)}" ] }, - "execution_count": 139, + "execution_count": 114, "metadata": {}, "output_type": "execute_result" } @@ -7619,7 +8553,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 115, "metadata": {}, "outputs": [ { @@ -7631,7 +8565,7 @@ "{(1↦1),(1↦2),(1↦3),(2↦2),(2↦3),(3↦3)}" ] }, - "execution_count": 140, + "execution_count": 115, "metadata": {}, "output_type": "execute_result" } @@ -7642,7 +8576,7 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 116, "metadata": {}, "outputs": [ { @@ -7651,64 +8585,73 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"127pt\" height=\"224pt\"\n", - " viewBox=\"0.00 0.00 126.66 224.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 220)\">\n", + "<svg width=\"137pt\" height=\"218pt\"\n", + " viewBox=\"0.00 0.00 137.00 218.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 214)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-220 123.661,-220 123.661,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-214 133,-214 133,4 -4,4\"/>\n", "<!-- 3 -->\n", - "<g id=\"node1\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,-0 54,-0 54,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"61,-36 7,-36 7,0 61,0 61,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"34\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-26.2419C64.0239,-26.4192 72,-23.6719 72,-18 72,-14.5437 69.0382,-12.1734 64.5105,-10.8891\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5639,-7.3739 54.2408,-9.75806 63.7975,-14.3318 64.5639,-7.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"77.8303\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M61.24,-25.87C71.02,-26.04 79,-23.41 79,-18 79,-14.7 76.04,-12.44 71.51,-11.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.55,-7.7 61.24,-10.13 70.82,-14.66 71.55,-7.7\"/>\n", + "<text text-anchor=\"middle\" x=\"86\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"89,-126 35,-126 35,-90 89,-90 89,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"62\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"97,-123 43,-123 43,-87 97,-87 97,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"70\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M55.0851,-89.614C50.0673,-76.9977 43.1896,-59.7052 37.4963,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"40.7294,-44.0489 33.7814,-36.0504 34.225,-46.636 40.7294,-44.0489\"/>\n", - "<text text-anchor=\"middle\" x=\"52.8303\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M62.71,-86.8C57.69,-74.93 50.91,-58.93 45.2,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"48.4,-44.02 41.27,-36.18 41.95,-46.75 48.4,-44.02\"/>\n", + "<text text-anchor=\"middle\" x=\"61\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M89.2408,-116.242C99.0239,-116.419 107,-113.672 107,-108 107,-104.544 104.038,-102.173 99.5105,-100.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"99.5639,-97.3739 89.2408,-99.7581 98.7975,-104.332 99.5639,-97.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"112.83\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M97.24,-112.87C107.02,-113.04 115,-110.41 115,-105 115,-101.7 112.04,-99.44 107.51,-98.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"107.55,-94.7 97.24,-97.13 106.82,-101.66 107.55,-94.7\"/>\n", + "<text text-anchor=\"middle\" x=\"122\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node6\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-216 0,-216 0,-180 54,-180 54,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-210 0,-210 0,-174 54,-174 54,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M23.0751,-179.897C20.0025,-165.587 15.9833,-144.583 14.3394,-126 12.9295,-110.062 12.9295,-105.938 14.3394,-90 15.6366,-75.3365 18.4126,-59.1664 21.0356,-45.9664\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"24.4777,-46.6042 23.0751,-36.1026 17.6227,-45.1867 24.4777,-46.6042\"/>\n", - "<text text-anchor=\"middle\" x=\"20.8303\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M24.05,-173.67C20.94,-153 16.9,-117.43 20,-87 21.39,-73.32 24.32,-58.33 27.15,-45.92\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.55,-46.72 29.45,-36.18 23.74,-45.1 30.55,-46.72\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M33.9149,-179.614C38.9327,-166.998 45.8104,-149.705 51.5037,-135.391\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"54.775,-136.636 55.2186,-126.05 48.2706,-134.049 54.775,-136.636\"/>\n", - "<text text-anchor=\"middle\" x=\"52.8303\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M35.7,-173.8C41.7,-161.93 49.8,-145.93 56.62,-132.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"59.92,-133.68 61.31,-123.18 53.67,-130.52 59.92,-133.68\"/>\n", + "<text text-anchor=\"middle\" x=\"58\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2408,-206.242C64.0239,-206.419 72,-203.672 72,-198 72,-194.544 69.0382,-192.173 64.5105,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.5639,-187.374 54.2408,-189.758 63.7975,-194.332 64.5639,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"77.8303\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.24,-199.87C64.02,-200.04 72,-197.41 72,-192 72,-188.7 69.04,-186.44 64.51,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"64.55,-181.7 54.24,-184.13 63.82,-188.66 64.55,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"79\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">r*</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -7717,7 +8660,7 @@ "<Dot visualization: expr_as_graph [Arsub1A={1,2,3} & r={(1,2),(2,3)} & sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"r*\",id(A)\\/r\\/(r;r)\\/((r;r);r)\\/(((r;r);r);r))]>" ] }, - "execution_count": 141, + "execution_count": 116, "metadata": {}, "output_type": "execute_result" } @@ -7735,18 +8678,97 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 117, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{(1\\mapsto 2),(1\\mapsto 3),(2\\mapsto 3)\\}$" + ], + "text/plain": [ + "{(1↦2),(1↦3),(2↦3)}" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "closure1(r)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 118, "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.44.1 (0)\n", + " -->\n", + "<!-- Title: state Pages: 1 -->\n", + "<svg width=\"97pt\" height=\"218pt\"\n", + " viewBox=\"0.00 0.00 97.00 218.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 214)\">\n", + "<title>state</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-214 93,-214 93,4 -4,4\"/>\n", + "<!-- 2 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"86,-36 32,-36 32,0 86,0 86,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"59\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M33.48,-86.8C37.9,-75.05 43.85,-59.24 48.89,-45.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"52.29,-46.77 52.53,-36.18 45.74,-44.3 52.29,-46.77\"/>\n", + "<text text-anchor=\"middle\" x=\"53.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">r+</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"86,-210 32,-210 32,-174 86,-174 86,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"59\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "</g>\n", + "<!-- 1->2 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.52,-173.8C48.1,-162.05 42.15,-146.24 37.11,-132.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"40.26,-131.3 33.47,-123.18 33.71,-133.77 40.26,-131.3\"/>\n", + "<text text-anchor=\"middle\" x=\"53.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">r+</text>\n", + "</g>\n", + "<!-- 1->3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M63.77,-173.69C65.09,-168.09 66.34,-161.82 67,-156 72.08,-110.95 72.08,-99.05 67,-54 66.71,-51.45 66.31,-48.82 65.84,-46.2\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"69.25,-45.38 63.77,-36.31 62.39,-46.82 69.25,-45.38\"/>\n", + "<text text-anchor=\"middle\" x=\"79.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">r+</text>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: expr_as_graph [Arsub1A={1,2,3} & r={(1,2),(2,3)} & sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"r+\",closure1(r))]>" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":dot expr_as_graph (\"r+\",closure1(r))" ] @@ -7760,7 +8782,7 @@ }, { "cell_type": "code", - "execution_count": 142, + "execution_count": 119, "metadata": {}, "outputs": [ { @@ -7772,7 +8794,7 @@ "{1,2}" ] }, - "execution_count": 142, + "execution_count": 119, "metadata": {}, "output_type": "execute_result" } @@ -7790,16 +8812,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 120, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$/*@symbolic*/ \\{\\mathit{z\\_},\\mathit{z\\_\\_}\\mid \\mathit{z\\_} \\mapsto \\mathit{z\\_\\_} \\in \\{(1\\mapsto 2),(1\\mapsto 3),(2\\mapsto 3)\\} \\lor \\mathit{z\\_} = \\mathit{z\\_\\_}\\}$" + ], + "text/plain": [ + "/*@symbolic*/ {z_,z__∣z_ ↦ z__ ∈ {(1↦2),(1↦3),(2↦3)} ∨ z_ = z__}" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "closure(r)" ] }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 121, "metadata": {}, "outputs": [ { @@ -7811,7 +8847,7 @@ "{1,2,3}" ] }, - "execution_count": 143, + "execution_count": 121, "metadata": {}, "output_type": "execute_result" } @@ -7822,7 +8858,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 122, "metadata": {}, "outputs": [], "source": [ @@ -7846,7 +8882,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 123, "metadata": {}, "outputs": [ { @@ -7858,7 +8894,7 @@ "{(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 145, + "execution_count": 123, "metadata": {}, "output_type": "execute_result" } @@ -7871,12 +8907,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Eine Funktion kann also als Mengen von Paaren dargestellt werden. Es sind aber nicht alle Mengen an Paaren auch Funktionen. Zum Beispiel, unsere Relation sub1 von oben ist keine Funktion:" + "Eine Funktion kann also als Menge von Paaren dargestellt werden. Es sind aber nicht alle Mengen an Paaren auch Funktionen. Zum Beispiel, unsere Relation sub1 von oben ist keine Funktion:" ] }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 124, "metadata": {}, "outputs": [ { @@ -7885,125 +8921,145 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"261pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 260.64 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"315pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 315.17 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 257.637,-310 257.637,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 311.17,-301 311.17,4 -4,4\"/>\n", "<!-- \\{3\\} -->\n", - "<g id=\"node1\" class=\"node\"><title>\\{3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"78.1929,-216 24.1929,-216 24.1929,-180 78.1929,-180 78.1929,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"51.1929\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>\\{3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"87.17,-210 33.17,-210 33.17,-174 87.17,-174 87.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"60.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{3}</text>\n", "</g>\n", "<!-- \\{2,3\\} -->\n", - "<g id=\"node3\" class=\"node\"><title>\\{2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"151.193,-126 97.1929,-126 97.1929,-90 151.193,-90 151.193,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"124.193\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>\\{2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"175.67,-123 118.67,-123 118.67,-87 175.67,-87 175.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"147.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{2,3\\} -->\n", - "<g id=\"edge2\" class=\"edge\"><title>\\{3\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M47.0235,-179.946C45.3038,-168.863 45.0413,-154.566 51.7483,-144 52.0451,-143.532 69.8441,-134.93 87.7229,-126.372\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.4743,-129.414 96.9873,-121.944 86.4556,-123.099 89.4743,-129.414\"/>\n", - "<text text-anchor=\"middle\" x=\"65.4152\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>\\{3\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M58.53,-173.62C58.47,-163.17 60.11,-150.16 67.17,-141 78.24,-126.64 88.33,-130 108.99,-123\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"110.49,-126.17 118.53,-119.28 107.94,-119.65 110.49,-126.17\"/>\n", + "<text text-anchor=\"middle\" x=\"84.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\} -->\n", - "<g id=\"node5\" class=\"node\"><title>\\{1,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"79.1929,-126 25.1929,-126 25.1929,-90 79.1929,-90 79.1929,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"52.1929\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>\\{1,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"100.67,-123 43.67,-123 43.67,-87 100.67,-87 100.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"72.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,3}</text>\n", "</g>\n", "<!-- \\{3\\}->\\{1,3\\} -->\n", - "<g id=\"edge4\" class=\"edge\"><title>\\{3\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M24.1554,-183.975C15.7282,-178.453 7.42392,-171.146 2.74827,-162 -0.893163,-154.877 -0.927551,-151.106 2.74827,-144 6.02749,-137.661 11.0425,-132.224 16.6425,-127.655\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"19.037,-130.245 25.132,-121.579 14.963,-124.553 19.037,-130.245\"/>\n", - "<text text-anchor=\"middle\" x=\"16.4152\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>\\{3\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M32.85,-180.68C13.62,-171.72 -7.02,-157.6 3.17,-141 10.1,-129.71 21.94,-121.92 33.86,-116.62\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"35.34,-119.8 43.36,-112.88 32.77,-113.29 35.34,-119.8\"/>\n", + "<text text-anchor=\"middle\" x=\"20.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2,3\\} -->\n", - "<g id=\"node7\" class=\"node\"><title>\\{1,2,3\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.77,-36 95.616,-36 95.616,-0 152.77,-0 152.77,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"124.193\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>\\{1,2,3\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"182.67,-36 111.67,-36 111.67,0 182.67,0 182.67,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"147.17\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2,3}</text>\n", "</g>\n", "<!-- \\{2,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge6\" class=\"edge\"><title>\\{2,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M124.193,-89.614C124.193,-77.2403 124.193,-60.3686 124.193,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"127.693,-46.0504 124.193,-36.0504 120.693,-46.0504 127.693,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"137.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>\\{2,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M147.17,-86.8C147.17,-75.16 147.17,-59.55 147.17,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"150.67,-46.18 147.17,-36.18 143.67,-46.18 150.67,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"164.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,3\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge12\" class=\"edge\"><title>\\{1,3\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M65.4484,-89.6378C73.503,-79.2032 84.0678,-65.719 93.7483,-54 96.4602,-50.717 99.3507,-47.297 102.23,-43.9367\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"104.944,-46.1494 108.84,-36.2969 99.6503,-41.5693 104.944,-46.1494\"/>\n", - "<text text-anchor=\"middle\" x=\"106.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>\\{1,3\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M83.31,-86.64C90.02,-76.69 99.02,-64.19 108.17,-54 111.49,-50.3 115.17,-46.59 118.9,-43.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"121.54,-45.36 126.55,-36.02 116.81,-40.2 121.54,-45.36\"/>\n", + "<text text-anchor=\"middle\" x=\"125.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{2\\} -->\n", - "<g id=\"node8\" class=\"node\"><title>\\{2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"225.193,-216 171.193,-216 171.193,-180 225.193,-180 225.193,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"198.193\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>\\{2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"261.17,-210 207.17,-210 207.17,-174 261.17,-174 261.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"234.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{2,3\\} -->\n", - "<g id=\"edge8\" class=\"edge\"><title>\\{2\\}->\\{2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M193.88,-179.893C190.447,-168.788 184.775,-154.485 176.193,-144 171.549,-138.326 165.748,-133.215 159.72,-128.762\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"161.678,-125.861 151.447,-123.109 157.729,-131.641 161.678,-125.861\"/>\n", - "<text text-anchor=\"middle\" x=\"199.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>\\{2\\}->\\{2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M229.66,-173.64C226.25,-163.2 220.66,-150.2 212.17,-141 207.77,-136.24 196.69,-129.77 184.9,-123.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"186.35,-120.5 175.84,-119.15 183.22,-126.76 186.35,-120.5\"/>\n", + "<text text-anchor=\"middle\" x=\"239.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\} -->\n", - "<g id=\"node11\" class=\"node\"><title>\\{1,2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"223.193,-126 169.193,-126 169.193,-90 223.193,-90 223.193,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"196.193\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>\\{1,2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"250.67,-123 193.67,-123 193.67,-87 250.67,-87 250.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"222.17\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1,2}</text>\n", "</g>\n", "<!-- \\{2\\}->\\{1,2\\} -->\n", - "<g id=\"edge10\" class=\"edge\"><title>\\{2\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M215,-179.823C219.142,-174.525 223.014,-168.392 225.193,-162 227.774,-154.428 227.906,-151.526 225.193,-144 224.006,-140.708 222.361,-137.506 220.451,-134.463\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"223.255,-132.368 214.529,-126.358 217.603,-136.497 223.255,-132.368\"/>\n", - "<text text-anchor=\"middle\" x=\"239.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>\\{2\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M258.3,-173.8C268.19,-164.53 276.08,-152.63 270.17,-141 267.41,-135.58 263.38,-130.8 258.81,-126.66\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"260.75,-123.73 250.73,-120.27 256.41,-129.22 260.75,-123.73\"/>\n", + "<text text-anchor=\"middle\" x=\"289.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1,2\\}->\\{1,2,3\\} -->\n", - "<g id=\"edge14\" class=\"edge\"><title>\\{1,2\\}->\\{1,2,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M182.74,-89.68C174.58,-79.2604 163.901,-65.7771 154.193,-54 151.501,-50.7347 148.642,-47.3251 145.799,-43.9702\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"148.435,-41.668 139.28,-36.3348 143.111,-46.2129 148.435,-41.668\"/>\n", - "<text text-anchor=\"middle\" x=\"181.415\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>\\{1,2\\}->\\{1,2,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M211.03,-86.64C204.32,-76.69 195.32,-64.19 186.17,-54 182.85,-50.3 179.17,-46.59 175.44,-43.04\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"177.53,-40.2 167.79,-36.02 172.79,-45.36 177.53,-40.2\"/>\n", + "<text text-anchor=\"middle\" x=\"214.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\} -->\n", - "<g id=\"node14\" class=\"node\"><title>\\{1\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.193,-216 98.1929,-216 98.1929,-180 152.193,-180 152.193,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"125.193\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>\\{1\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"178.17,-210 124.17,-210 124.17,-174 178.17,-174 178.17,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"151.17\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{1}</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,3\\} -->\n", - "<g id=\"edge16\" class=\"edge\"><title>\\{1\\}->\\{1,3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.77,-179.614C99.9021,-166.512 84.8505,-148.368 72.7263,-133.753\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"75.4154,-131.512 66.337,-126.05 70.0278,-135.982 75.4154,-131.512\"/>\n", - "<text text-anchor=\"middle\" x=\"108.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M135.18,-173.8C123.62,-161.36 107.83,-144.36 94.94,-130.5\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"97.5,-128.12 88.13,-123.18 92.38,-132.88 97.5,-128.12\"/>\n", + "<text text-anchor=\"middle\" x=\"133.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{1\\}->\\{1,2\\} -->\n", - "<g id=\"edge18\" class=\"edge\"><title>\\{1\\}->\\{1,2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.79,-179.564C134.882,-168.597 141.21,-154.571 149.748,-144 153.073,-139.884 156.983,-135.986 161.099,-132.39\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"163.591,-134.876 169.169,-125.868 159.191,-129.432 163.591,-134.876\"/>\n", - "<text text-anchor=\"middle\" x=\"162.415\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>\\{1\\}->\\{1,2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.95,-173.69C162.45,-163.51 169.03,-150.77 177.17,-141 180.49,-137.02 184.34,-133.19 188.35,-129.64\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"190.72,-132.22 196.2,-123.15 186.26,-126.83 190.72,-132.22\"/>\n", + "<text text-anchor=\"middle\" x=\"194.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\} -->\n", - "<g id=\"node17\" class=\"node\"><title>\\{\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"152.193,-306 98.1929,-306 98.1929,-270 152.193,-270 152.193,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"125.193\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>\\{\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"178.17,-297 124.17,-297 124.17,-261 178.17,-261 178.17,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"151.17\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">{}</text>\n", "</g>\n", "<!-- \\{\\}->\\{3\\} -->\n", - "<g id=\"edge20\" class=\"edge\"><title>\\{\\}->\\{3\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M110.231,-269.993C105.269,-264.302 99.7402,-257.904 94.7483,-252 87.0945,-242.948 78.8083,-232.923 71.5385,-224.05\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"74.2326,-221.816 65.1951,-216.287 68.8119,-226.245 74.2326,-221.816\"/>\n", - "<text text-anchor=\"middle\" x=\"107.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>\\{\\}->\\{3\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M131.61,-260.68C125.36,-255.09 118.44,-248.82 112.17,-243 103.32,-234.78 93.75,-225.65 85.27,-217.47\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"87.46,-214.72 77.83,-210.28 82.59,-219.75 87.46,-214.72\"/>\n", + "<text text-anchor=\"middle\" x=\"129.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{2\\} -->\n", - "<g id=\"edge22\" class=\"edge\"><title>\\{\\}->\\{2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M139.934,-269.989C144.823,-264.297 150.272,-257.9 155.193,-252 162.669,-243.035 170.759,-233.122 177.883,-224.317\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"180.811,-226.262 184.366,-216.282 175.363,-221.867 180.811,-226.262\"/>\n", - "<text text-anchor=\"middle\" x=\"182.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>\\{\\}->\\{2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M171.03,-260.99C177.3,-255.41 184.15,-249.08 190.17,-243 197.98,-235.11 206.12,-226.11 213.25,-217.94\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"216.11,-219.97 219.98,-210.11 210.8,-215.41 216.11,-219.97\"/>\n", + "<text text-anchor=\"middle\" x=\"220.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "<!-- \\{\\}->\\{1\\} -->\n", - "<g id=\"edge24\" class=\"edge\"><title>\\{\\}->\\{1\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.193,-269.614C125.193,-257.24 125.193,-240.369 125.193,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"128.693,-226.05 125.193,-216.05 121.693,-226.05 128.693,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"138.415\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>\\{\\}->\\{1\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M151.17,-260.8C151.17,-249.16 151.17,-233.55 151.17,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"154.67,-220.18 151.17,-210.18 147.67,-220.18 154.67,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"168.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">sub1</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -8012,7 +9068,7 @@ "<Dot visualization: expr_as_graph [Asub1A={1,2,3} & sub1={({},{1}),({},{2}),({},{3}),({1},{1,2}),({1},{1,3}),({1,2},{1,2,3}),({1,3},{1,2,3}),({2},{1,2}),({2},{2,3}),({2,3},{1,2,3}),({3},{1,3}),({3},{2,3})}(\"sub1\",sub1)]>" ] }, - "execution_count": 146, + "execution_count": 124, "metadata": {}, "output_type": "execute_result" } @@ -8030,9 +9086,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 125, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\{(\\emptyset\\mapsto\\{1\\}),(\\emptyset\\mapsto\\{2\\}),(\\emptyset\\mapsto\\{3\\}),(\\{1\\}\\mapsto\\{1,2\\}),(\\{1\\}\\mapsto\\{1,3\\}),(\\{1,2\\}\\mapsto\\{1,2,3\\}),(\\{1,3\\}\\mapsto\\{1,2,3\\}),(\\{2\\}\\mapsto\\{1,2\\}),(\\{2\\}\\mapsto\\{2,3\\}),(\\{2,3\\}\\mapsto\\{1,2,3\\}),(\\{3\\}\\mapsto\\{1,3\\}),(\\{3\\}\\mapsto\\{2,3\\})\\}$" + ], + "text/plain": [ + "{(∅↦{1}),(∅↦{2}),(∅↦{3}),({1}↦{1,2}),({1}↦{1,3}),({1,2}↦{1,2,3}),({1,3}↦{1,2,3}),({2}↦{1,2}),({2}↦{2,3}),({2,3}↦{1,2,3}),({3}↦{1,3}),({3}↦{2,3})}" + ] + }, + "execution_count": 125, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sub1" ] @@ -8051,7 +9121,7 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 126, "metadata": {}, "outputs": [ { @@ -8063,7 +9133,7 @@ "FALSE" ] }, - "execution_count": 147, + "execution_count": 126, "metadata": {}, "output_type": "execute_result" } @@ -8074,7 +9144,7 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 127, "metadata": {}, "outputs": [ { @@ -8086,7 +9156,7 @@ "FALSE" ] }, - "execution_count": 148, + "execution_count": 127, "metadata": {}, "output_type": "execute_result" } @@ -8097,7 +9167,7 @@ }, { "cell_type": "code", - "execution_count": 149, + "execution_count": 128, "metadata": {}, "outputs": [], "source": [ @@ -8106,7 +9176,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 129, "metadata": {}, "outputs": [ { @@ -8118,7 +9188,7 @@ "{(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 150, + "execution_count": 129, "metadata": {}, "output_type": "execute_result" } @@ -8129,7 +9199,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 130, "metadata": {}, "outputs": [ { @@ -8149,7 +9219,7 @@ "\ti10 = {(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 151, + "execution_count": 130, "metadata": {}, "output_type": "execute_result" } @@ -8160,7 +9230,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 131, "metadata": {}, "outputs": [ { @@ -8180,7 +9250,7 @@ "\ti10 = {(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 152, + "execution_count": 131, "metadata": {}, "output_type": "execute_result" } @@ -8198,7 +9268,7 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 132, "metadata": {}, "outputs": [ { @@ -8218,7 +9288,7 @@ "\ti10 = {(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 153, + "execution_count": 132, "metadata": {}, "output_type": "execute_result" } @@ -8236,7 +9306,7 @@ }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 133, "metadata": {}, "outputs": [ { @@ -8248,7 +9318,7 @@ "FALSE" ] }, - "execution_count": 154, + "execution_count": 133, "metadata": {}, "output_type": "execute_result" } @@ -8259,7 +9329,7 @@ }, { "cell_type": "code", - "execution_count": 155, + "execution_count": 134, "metadata": {}, "outputs": [ { @@ -8271,7 +9341,7 @@ "FALSE" ] }, - "execution_count": 155, + "execution_count": 134, "metadata": {}, "output_type": "execute_result" } @@ -8282,7 +9352,7 @@ }, { "cell_type": "code", - "execution_count": 156, + "execution_count": 135, "metadata": {}, "outputs": [ { @@ -8294,7 +9364,7 @@ "{1,2,3,4,5,6,7,8,9,10}" ] }, - "execution_count": 156, + "execution_count": 135, "metadata": {}, "output_type": "execute_result" } @@ -8312,7 +9382,7 @@ }, { "cell_type": "code", - "execution_count": 157, + "execution_count": 136, "metadata": {}, "outputs": [ { @@ -8334,7 +9404,7 @@ "\tz = 5" ] }, - "execution_count": 157, + "execution_count": 136, "metadata": {}, "output_type": "execute_result" } @@ -8345,7 +9415,7 @@ }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 137, "metadata": {}, "outputs": [ { @@ -8357,7 +9427,7 @@ "{1,2,3,4,5,6,7,8,9,10}" ] }, - "execution_count": 158, + "execution_count": 137, "metadata": {}, "output_type": "execute_result" } @@ -8368,7 +9438,7 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 138, "metadata": {}, "outputs": [ { @@ -8380,7 +9450,7 @@ "{2,3,4,5,6,7,8,9,10,11}" ] }, - "execution_count": 159, + "execution_count": 138, "metadata": {}, "output_type": "execute_result" } @@ -8391,7 +9461,7 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 139, "metadata": {}, "outputs": [ { @@ -8403,7 +9473,7 @@ "{5,6}" ] }, - "execution_count": 160, + "execution_count": 139, "metadata": {}, "output_type": "execute_result" } @@ -8414,7 +9484,7 @@ }, { "cell_type": "code", - "execution_count": 167, + "execution_count": 140, "metadata": {}, "outputs": [ { @@ -8426,7 +9496,7 @@ "{5}" ] }, - "execution_count": 167, + "execution_count": 140, "metadata": {}, "output_type": "execute_result" } @@ -8437,7 +9507,7 @@ }, { "cell_type": "code", - "execution_count": 162, + "execution_count": 141, "metadata": {}, "outputs": [ { @@ -8449,7 +9519,7 @@ "{3}" ] }, - "execution_count": 162, + "execution_count": 141, "metadata": {}, "output_type": "execute_result" } @@ -8460,7 +9530,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 142, "metadata": {}, "outputs": [ { @@ -8472,7 +9542,7 @@ "{6}" ] }, - "execution_count": 163, + "execution_count": 142, "metadata": {}, "output_type": "execute_result" } @@ -8483,7 +9553,7 @@ }, { "cell_type": "code", - "execution_count": 164, + "execution_count": 143, "metadata": {}, "outputs": [ { @@ -8495,7 +9565,7 @@ "{5,6,7,8,9,10,11}" ] }, - "execution_count": 164, + "execution_count": 143, "metadata": {}, "output_type": "execute_result" } @@ -8506,7 +9576,7 @@ }, { "cell_type": "code", - "execution_count": 165, + "execution_count": 144, "metadata": {}, "outputs": [ { @@ -8518,7 +9588,7 @@ "{1,2,3}" ] }, - "execution_count": 165, + "execution_count": 144, "metadata": {}, "output_type": "execute_result" } @@ -8536,7 +9606,7 @@ }, { "cell_type": "code", - "execution_count": 170, + "execution_count": 145, "metadata": {}, "outputs": [ { @@ -8548,7 +9618,7 @@ "5" ] }, - "execution_count": 170, + "execution_count": 145, "metadata": {}, "output_type": "execute_result" } @@ -8559,7 +9629,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 146, "metadata": {}, "outputs": [ { @@ -8571,7 +9641,7 @@ "10" ] }, - "execution_count": 171, + "execution_count": 146, "metadata": {}, "output_type": "execute_result" } @@ -8589,7 +9659,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 147, "metadata": {}, "outputs": [ { @@ -8601,7 +9671,7 @@ "∅" ] }, - "execution_count": 172, + "execution_count": 147, "metadata": {}, "output_type": "execute_result" } @@ -8612,7 +9682,7 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 148, "metadata": {}, "outputs": [ { @@ -8624,7 +9694,7 @@ "{(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 173, + "execution_count": 148, "metadata": {}, "output_type": "execute_result" } @@ -8635,17 +9705,17 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 149, "metadata": {}, "outputs": [ { "ename": "CommandExecutionException", - "evalue": ":eval: NOT-WELL-DEFINED: \nfunction applied outside of domain (#7): Function argument: 100, function value: {}\n ### Line: 1, Column: 99 until 107\n\n", + "evalue": ":eval: NOT-WELL-DEFINED: \nfunction applied outside of domain (#7): Function argument: 100, function value: {}\n ### Line: 2, Column: 0 until 8\n\n", "output_type": "error", "traceback": [ "\u001b[1m\u001b[31m:eval: NOT-WELL-DEFINED: \u001b[0m", "\u001b[1m\u001b[31mfunction applied outside of domain (#7): Function argument: 100, function value: {}\u001b[0m", - "\u001b[1m\u001b[31m ### Line: 1, Column: 99 until 107\u001b[0m" + "\u001b[1m\u001b[31m ### Line: 2, Column: 0 until 8\u001b[0m" ] } ], @@ -8662,7 +9732,7 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 150, "metadata": {}, "outputs": [ { @@ -8674,7 +9744,7 @@ "{{(1↦1),(2↦1)},{(1↦1),(2↦2)},{(1↦2),(2↦1)},{(1↦2),(2↦2)}}" ] }, - "execution_count": 175, + "execution_count": 150, "metadata": {}, "output_type": "execute_result" } @@ -8698,7 +9768,7 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 151, "metadata": {}, "outputs": [ { @@ -8710,7 +9780,7 @@ "{∅,{(1↦1)},{(1↦1),(2↦1)},{(1↦1),(2↦2)},{(1↦2)},{(1↦2),(2↦1)},{(1↦2),(2↦2)},{(2↦1)},{(2↦2)}}" ] }, - "execution_count": 176, + "execution_count": 151, "metadata": {}, "output_type": "execute_result" } @@ -8721,7 +9791,7 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 152, "metadata": {}, "outputs": [ { @@ -8741,7 +9811,7 @@ "\ti10 = {(1↦2),(2↦3),(3↦4),(4↦5),(5↦6),(6↦7),(7↦8),(8↦9),(9↦10),(10↦11)}" ] }, - "execution_count": 177, + "execution_count": 152, "metadata": {}, "output_type": "execute_result" } @@ -8759,7 +9829,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 153, "metadata": {}, "outputs": [ { @@ -8771,7 +9841,7 @@ "{∅,{(1↦1)},{(1↦2)},{(2↦1)},{(2↦2)}}" ] }, - "execution_count": 178, + "execution_count": 153, "metadata": {}, "output_type": "execute_result" } @@ -8789,7 +9859,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 154, "metadata": {}, "outputs": [ { @@ -8801,7 +9871,7 @@ "{{(1↦1),(2↦2)},{(1↦2),(2↦1)}}" ] }, - "execution_count": 179, + "execution_count": 154, "metadata": {}, "output_type": "execute_result" } @@ -8819,7 +9889,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 155, "metadata": {}, "outputs": [ { @@ -8831,7 +9901,7 @@ "{{(1↦1),(2↦2)},{(1↦2),(2↦1)}}" ] }, - "execution_count": 180, + "execution_count": 155, "metadata": {}, "output_type": "execute_result" } @@ -8842,7 +9912,7 @@ }, { "cell_type": "code", - "execution_count": 181, + "execution_count": 156, "metadata": {}, "outputs": [ { @@ -8854,7 +9924,7 @@ "{{(1↦1),(2↦2)},{(1↦2),(2↦1)}}" ] }, - "execution_count": 181, + "execution_count": 156, "metadata": {}, "output_type": "execute_result" } @@ -8865,7 +9935,7 @@ }, { "cell_type": "code", - "execution_count": 182, + "execution_count": 157, "metadata": {}, "outputs": [], "source": [ @@ -8916,7 +9986,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 158, "metadata": {}, "outputs": [ { @@ -8928,7 +9998,7 @@ "{(1↦22),(2↦22),(3↦33)}" ] }, - "execution_count": 199, + "execution_count": 158, "metadata": {}, "output_type": "execute_result" } @@ -8939,7 +10009,7 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 159, "metadata": {}, "outputs": [ { @@ -8951,7 +10021,7 @@ "{(1↦22),(2↦22),(3↦33)}" ] }, - "execution_count": 200, + "execution_count": 159, "metadata": {}, "output_type": "execute_result" } @@ -8962,7 +10032,7 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 160, "metadata": {}, "outputs": [ { @@ -8971,56 +10041,64 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"206pt\" height=\"134pt\"\n", - " viewBox=\"0.00 0.00 206.00 134.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 130)\">\n", + "<svg width=\"206pt\" height=\"131pt\"\n", + " viewBox=\"0.00 0.00 206.00 131.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 127)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-130 203,-130 203,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 202,-127 202,4 -4,4\"/>\n", "<!-- 3 -->\n", - "<g id=\"node1\" class=\"node\"><title>3</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-126 0,-126 0,-90 54,-90 54,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>3</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-123 0,-123 0,-87 54,-87 54,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- 33 -->\n", - "<g id=\"node3\" class=\"node\"><title>33</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,-0 54,-0 54,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">33</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>33</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"54,-36 0,-36 0,0 54,0 54,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">33</text>\n", "</g>\n", "<!-- 3->33 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>3->33</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-89.614C27,-77.2403 27,-60.3686 27,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5001,-46.0504 27,-36.0504 23.5001,-46.0504 30.5001,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"32.0533\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>3->33</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M27,-86.8C27,-75.16 27,-59.55 27,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"30.5,-46.18 27,-36.18 23.5,-46.18 30.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"33\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node4\" class=\"node\"><title>2</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-126 72,-126 72,-90 126,-90 126,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"99\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"126,-123 72,-123 72,-87 126,-87 126,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- 22 -->\n", - "<g id=\"node6\" class=\"node\"><title>22</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"162,-36 108,-36 108,-0 162,-0 162,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"135\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">22</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>22</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"162,-36 108,-36 108,0 162,0 162,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">22</text>\n", "</g>\n", "<!-- 2->22 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>2->22</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.112,-89.614C111.274,-76.9977 118.348,-59.7052 124.204,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"127.478,-46.6311 128.025,-36.0504 120.999,-43.9807 127.478,-46.6311\"/>\n", - "<text text-anchor=\"middle\" x=\"125.053\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>2->22</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.29,-86.8C111.31,-74.93 118.09,-58.93 123.8,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"127.05,-46.75 127.73,-36.18 120.6,-44.02 127.05,-46.75\"/>\n", + "<text text-anchor=\"middle\" x=\"125\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node7\" class=\"node\"><title>1</title>\n", - "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-126 144,-126 144,-90 198,-90 198,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"171\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>1</title>\n", + "<polygon fill=\"#cdba96\" stroke=\"#cdba96\" points=\"198,-123 144,-123 144,-87 198,-87 198,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"171\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- 1->22 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>1->22</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M163.888,-89.614C158.726,-76.9977 151.652,-59.7052 145.796,-45.3907\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"149.001,-43.9807 141.975,-36.0504 142.522,-46.6311 149.001,-43.9807\"/>\n", - "<text text-anchor=\"middle\" x=\"161.053\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>1->22</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M163.71,-86.8C158.69,-74.93 151.91,-58.93 146.2,-45.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"149.4,-44.02 142.27,-36.18 142.95,-46.75 149.4,-44.02\"/>\n", + "<text text-anchor=\"middle\" x=\"161\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">G</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -9029,7 +10107,7 @@ "<Dot visualization: expr_as_graph [AGA={1,2,3} & G={(1,22),(2,22),(3,33)}(\"G\",G)]>" ] }, - "execution_count": 190, + "execution_count": 160, "metadata": {}, "output_type": "execute_result" } @@ -9053,7 +10131,7 @@ }, { "cell_type": "code", - "execution_count": 191, + "execution_count": 161, "metadata": {}, "outputs": [ { @@ -9065,7 +10143,7 @@ "22" ] }, - "execution_count": 191, + "execution_count": 161, "metadata": {}, "output_type": "execute_result" } @@ -9083,7 +10161,7 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 162, "metadata": {}, "outputs": [ { @@ -9095,7 +10173,7 @@ "3" ] }, - "execution_count": 192, + "execution_count": 162, "metadata": {}, "output_type": "execute_result" } @@ -9106,7 +10184,7 @@ }, { "cell_type": "code", - "execution_count": 193, + "execution_count": 163, "metadata": {}, "outputs": [ { @@ -9118,7 +10196,7 @@ "3" ] }, - "execution_count": 193, + "execution_count": 163, "metadata": {}, "output_type": "execute_result" } @@ -9136,7 +10214,7 @@ }, { "cell_type": "code", - "execution_count": 194, + "execution_count": 164, "metadata": {}, "outputs": [ { @@ -9148,7 +10226,7 @@ "{1,2,3}" ] }, - "execution_count": 194, + "execution_count": 164, "metadata": {}, "output_type": "execute_result" } @@ -9159,7 +10237,7 @@ }, { "cell_type": "code", - "execution_count": 195, + "execution_count": 165, "metadata": {}, "outputs": [ { @@ -9171,7 +10249,7 @@ "{22,33}" ] }, - "execution_count": 195, + "execution_count": 165, "metadata": {}, "output_type": "execute_result" } @@ -9182,7 +10260,7 @@ }, { "cell_type": "code", - "execution_count": 196, + "execution_count": 166, "metadata": {}, "outputs": [ { @@ -9194,7 +10272,7 @@ "{1,2}" ] }, - "execution_count": 196, + "execution_count": 166, "metadata": {}, "output_type": "execute_result" } @@ -9205,7 +10283,7 @@ }, { "cell_type": "code", - "execution_count": 197, + "execution_count": 167, "metadata": {}, "outputs": [], "source": [ diff --git a/info4/kapitel-1/FormaleSprachen.ipynb b/info4/kapitel-1/FormaleSprachen.ipynb index 5371160f86a09efa875eacfbcac3ec6896006d33..44a9b80a328235cea1b6d1629207f06bbb6e159b 100644 --- a/info4/kapitel-1/FormaleSprachen.ipynb +++ b/info4/kapitel-1/FormaleSprachen.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -20,7 +20,7 @@ "Loaded machine: Alphabet" ] }, - "execution_count": 67, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -59,7 +59,7 @@ "TRUE" ] }, - "execution_count": 70, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -70,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -82,7 +82,7 @@ "TRUE" ] }, - "execution_count": 71, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -100,7 +100,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -112,7 +112,7 @@ "3" ] }, - "execution_count": 72, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -123,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -135,7 +135,7 @@ "4" ] }, - "execution_count": 73, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -153,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -171,7 +171,7 @@ "\tε = ∅" ] }, - "execution_count": 74, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -191,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -209,7 +209,7 @@ "\tSprachen = {L∣L ⊆ seq(Σ)}" ] }, - "execution_count": 75, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -227,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -236,7 +236,7 @@ "Loaded machine: Alphabet" ] }, - "execution_count": 77, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -258,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -267,7 +267,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 78, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -278,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -290,7 +290,7 @@ "{(1↦a),(2↦a),(3↦b),(4↦c)}" ] }, - "execution_count": 79, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -308,7 +308,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -317,7 +317,7 @@ "Preference changed: PP_SEQUENCES = TRUE\n" ] }, - "execution_count": 80, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -328,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -340,7 +340,7 @@ "[a,a,b,c]" ] }, - "execution_count": 81, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -358,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -370,7 +370,7 @@ "[c,c]" ] }, - "execution_count": 82, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -381,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -393,7 +393,7 @@ "{[c,c],[a,a,b,c]}" ] }, - "execution_count": 83, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -411,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -429,7 +429,7 @@ "\tLeereSprache = []" ] }, - "execution_count": 84, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -447,7 +447,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -459,7 +459,7 @@ "2" ] }, - "execution_count": 85, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -470,7 +470,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -482,7 +482,7 @@ "1" ] }, - "execution_count": 86, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -493,7 +493,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -505,7 +505,7 @@ "0" ] }, - "execution_count": 87, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -523,7 +523,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -535,7 +535,7 @@ "{[c,c],[a,a,b,c]}" ] }, - "execution_count": 88, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -546,7 +546,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -558,7 +558,7 @@ "{[c,c],[a,a,a]}" ] }, - "execution_count": 90, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -569,7 +569,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -581,7 +581,7 @@ "{[c,c],[a,a,a],[a,a,b,c]}" ] }, - "execution_count": 91, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -592,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -604,7 +604,7 @@ "{[c,c],[a,a,a],[a,a,b,c]}" ] }, - "execution_count": 92, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -615,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -627,7 +627,7 @@ "{[c,c]}" ] }, - "execution_count": 93, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -638,7 +638,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -650,7 +650,7 @@ "{[c,c]}" ] }, - "execution_count": 94, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -661,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -673,7 +673,7 @@ "{[a,a,b,c]}" ] }, - "execution_count": 95, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -684,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -696,7 +696,7 @@ "{[a,a,a]}" ] }, - "execution_count": 96, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -707,7 +707,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -725,7 +725,7 @@ "\tKomplement = (seq(Σ) − {[c,c],[a,a,b,c]})" ] }, - "execution_count": 97, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -745,7 +745,7 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -757,7 +757,7 @@ "[a,a,b,c]" ] }, - "execution_count": 101, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -768,7 +768,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -780,7 +780,7 @@ "[a,a,b,c,a,a,b,c]" ] }, - "execution_count": 102, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -791,7 +791,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -803,7 +803,7 @@ "[a,a,b,c]" ] }, - "execution_count": 103, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -814,7 +814,7 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -826,7 +826,7 @@ "[a,a,b,c]" ] }, - "execution_count": 104, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -844,7 +844,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -856,7 +856,7 @@ "{[c,c],[a,a,b,c]}" ] }, - "execution_count": 105, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -867,7 +867,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -879,7 +879,7 @@ "{[c,c],[a,a,a]}" ] }, - "execution_count": 106, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -890,7 +890,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -902,7 +902,7 @@ "{[c,c,c,c],[c,c,a,a,a],[a,a,b,c,c,c],[a,a,b,c,a,a,a]}" ] }, - "execution_count": 107, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -921,7 +921,7 @@ }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -933,7 +933,7 @@ "{[c,c,c,c],[c,c,a,a,b,c],[a,a,b,c,c,c],[a,a,b,c,a,a,b,c]}" ] }, - "execution_count": 114, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -952,7 +952,7 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -964,7 +964,7 @@ "{[c,c,c,c,c,c],[c,c,a,a,b,c,c,c],[a,a,b,c,c,c,c,c],[c,c,c,c,a,a,b,c],[a,a,b,c,a,a,b,c,c,c],[c,c,a,a,b,c,a,a,b,c],[a,a,b,c,c,c,a,a,b,c],[a,a,b,c,a,a,b,c,a,a,b,c]}" ] }, - "execution_count": 118, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -975,7 +975,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -987,7 +987,7 @@ "{[c,c,c,c,c,c,c,c],[c,c,c,c,a,a,b,c,c,c],[c,c,a,a,b,c,c,c,c,c],[a,a,b,c,c,c,c,c,c,c],[c,c,c,c,c,c,a,a,b,c],[a,a,b,c,a,a,b,c,c,c,c,c],[c,c,c,c,a,a,b,c,a,a,b,c],[c,c,a,a,b,c,c,c,a,a,b,c],[c,c,a,a,b,c,a,a,b,c,c,c],[a,a,b,c,c,c,c,c,a,a,b,c],[a,a,b,c,c,c,a,a,b,c,c,c],[c,c,a,a,b,c,a,a,b,c,a,a,b,c],[a,a,b,c,c,c,a,a,b,c,a,a,b,c],[a,a,b,c,a,a,b,c,c,c,a,a,b,c],[a,a,b,c,a,a,b,c,a,a,b,c,c,c],[a,a,b,c,a,a,b,c,a,a,b,c,a,a,b,c]}" ] }, - "execution_count": 119, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -998,7 +998,7 @@ }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 38, "metadata": {}, "outputs": [], "source": [ @@ -1007,7 +1007,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -1016,7 +1016,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -1032,7 +1032,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1044,7 +1044,7 @@ "[c,b,a,a]" ] }, - "execution_count": 132, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1062,19 +1062,19 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ - "$\\{[a,\\mathit{b},\\mathit{a},c],[c,\\mathit{b},\\mathit{a},a]\\}$" + "$\\{[c,c],[c,\\mathit{b},\\mathit{a},a]\\}$" ], "text/plain": [ - "{[a,b,a,c],[c,b,a,a]}" + "{[c,c],[c,b,a,a]}" ] }, - "execution_count": 133, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1092,7 +1092,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1101,7 +1101,7 @@ "Loaded machine: Alphabet" ] }, - "execution_count": 134, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1128,7 +1128,7 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1137,7 +1137,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 135, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1148,7 +1148,7 @@ }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1160,7 +1160,7 @@ "TRUE" ] }, - "execution_count": 136, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1171,7 +1171,7 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1183,7 +1183,7 @@ "FALSE" ] }, - "execution_count": 137, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1194,7 +1194,7 @@ }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1206,7 +1206,7 @@ "TRUE" ] }, - "execution_count": 138, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1224,7 +1224,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1236,7 +1236,7 @@ "{[],[c],[c,b],[c,b,a],[c,b,a,a],[c,b,a,a,b]}" ] }, - "execution_count": 139, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1247,7 +1247,7 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1259,7 +1259,7 @@ "{[],[a],[a,a],[a,b],[b],[b,a],[c],[c,b],[a,a,b],[b,a,a],[b,a,a,b],[c,b,a],[c,b,a,a],[c,b,a,a,b]}" ] }, - "execution_count": 140, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1270,7 +1270,7 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -1282,7 +1282,7 @@ "{[],[a],[a,b],[b],[b,c],[c],[a,b,c]}" ] }, - "execution_count": 141, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1293,7 +1293,7 @@ }, { "cell_type": "code", - "execution_count": 142, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -1302,7 +1302,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = FALSE\n" ] }, - "execution_count": 142, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1313,7 +1313,7 @@ }, { "cell_type": "code", - "execution_count": 143, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -1322,180 +1322,209 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"414pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 413.60 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"441pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 440.61 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 410.603,-310 410.603,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 436.61,-301 436.61,4 -4,4\"/>\n", "<!-- [a,b,c] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"192.606,-36 138.606,-36 138.606,-0 192.606,-0 192.606,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"165.606\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"213.11,-36 152.11,-36 152.11,0 213.11,0 213.11,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"182.61\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", "</g>\n", "<!-- [a,b,c]->[a,b,c] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,b,c]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M192.846,-26.2419C202.629,-26.4192 210.606,-23.6719 210.606,-18 210.606,-14.5437 207.644,-12.1734 203.116,-10.8891\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.169,-7.3739 192.846,-9.75806 202.403,-14.3318 203.169,-7.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"217.604\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,b,c]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M213.39,-25.87C223.28,-25.79 231.11,-23.17 231.11,-18 231.11,-14.77 228.05,-12.53 223.34,-11.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"223.73,-7.81 213.39,-10.13 222.92,-14.77 223.73,-7.81\"/>\n", + "<text text-anchor=\"middle\" x=\"240.61\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [c] -->\n", - "<g id=\"node3\" class=\"node\"><title>[c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"67.6055,-216 13.6055,-216 13.6055,-180 67.6055,-180 67.6055,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"40.6055\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[c]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"67.61,-210 13.61,-210 13.61,-174 67.61,-174 67.61,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"40.61\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[c]</text>\n", "</g>\n", "<!-- [c]->[a,b,c] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[c]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M38.2249,-179.963C35.9901,-157.532 35.2109,-117.703 52.6083,-90 70.0898,-62.1634 102.9,-43.3742 128.68,-32.1538\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"130.272,-35.283 138.17,-28.221 127.592,-28.8163 130.272,-35.283\"/>\n", - "<text text-anchor=\"middle\" x=\"60.6041\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[c]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M38,-173.85C35.59,-151.75 34.7,-113.07 52.61,-87 73.53,-56.54 112.5,-38.76 142.33,-29.08\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"143.53,-32.37 152.06,-26.1 141.48,-25.68 143.53,-32.37\"/>\n", + "<text text-anchor=\"middle\" x=\"62.11\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [c]->[c] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[c]->[c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M67.8463,-206.242C77.6295,-206.419 85.6055,-203.672 85.6055,-198 85.6055,-194.544 82.6437,-192.173 78.116,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"78.1694,-187.374 67.8463,-189.758 77.403,-194.332 78.1694,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"92.6041\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[c]->[c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M67.85,-199.87C77.63,-200.04 85.61,-197.41 85.61,-192 85.61,-188.7 82.65,-186.44 78.12,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"78.16,-181.7 67.85,-184.13 77.43,-188.66 78.16,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"95.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b,c] -->\n", - "<g id=\"node7\" class=\"node\"><title>[b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"129.606,-126 75.6055,-126 75.6055,-90 129.606,-90 129.606,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"102.606\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[b,c]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"134.61,-123 80.61,-123 80.61,-87 134.61,-87 134.61,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"107.61\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[b,c]</text>\n", "</g>\n", "<!-- [c]->[b,c] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[c]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M52.8547,-179.614C61.9145,-166.755 74.3967,-149.038 84.5916,-134.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"87.6944,-136.241 90.5928,-126.05 81.972,-132.209 87.6944,-136.241\"/>\n", - "<text text-anchor=\"middle\" x=\"84.6041\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[c]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.17,-173.8C63.79,-161.59 76.87,-144.99 87.68,-131.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"90.63,-133.2 94.07,-123.18 85.13,-128.86 90.63,-133.2\"/>\n", + "<text text-anchor=\"middle\" x=\"87.11\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b,c]->[a,b,c] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[b,c]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M115.052,-89.614C124.258,-76.7551 136.942,-59.0384 147.301,-44.5682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"150.424,-46.2189 153.399,-36.0504 144.732,-42.1441 150.424,-46.2189\"/>\n", - "<text text-anchor=\"middle\" x=\"147.604\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[b,c]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M122.79,-86.8C133.66,-74.47 148.48,-57.68 160.65,-43.89\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"163.46,-45.99 167.45,-36.18 158.21,-41.36 163.46,-45.99\"/>\n", + "<text text-anchor=\"middle\" x=\"158.11\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b,c]->[b,c] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[b,c]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M129.846,-116.242C139.629,-116.419 147.606,-113.672 147.606,-108 147.606,-104.544 144.644,-102.173 140.116,-100.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"140.169,-97.3739 129.846,-99.7581 139.403,-104.332 140.169,-97.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"154.604\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[b,c]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M134.85,-112.87C144.63,-113.04 152.61,-110.41 152.61,-105 152.61,-101.7 149.65,-99.44 145.12,-98.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"145.16,-94.7 134.85,-97.13 144.43,-101.66 145.16,-94.7\"/>\n", + "<text text-anchor=\"middle\" x=\"162.11\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b] -->\n", - "<g id=\"node10\" class=\"node\"><title>[b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"220.606,-216 166.606,-216 166.606,-180 220.606,-180 220.606,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"193.606\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[b]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"231.61,-210 177.61,-210 177.61,-174 231.61,-174 231.61,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"204.61\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[b]</text>\n", "</g>\n", "<!-- [b]->[a,b,c] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[b]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M190.921,-179.933C186.05,-148.966 175.72,-83.2989 169.873,-46.1292\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"173.294,-45.3503 168.282,-36.0157 166.379,-46.4381 173.294,-45.3503\"/>\n", - "<text text-anchor=\"middle\" x=\"189.604\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[b]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M202.42,-173.88C198.6,-144 190.68,-82.11 186.1,-46.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"189.53,-45.53 184.79,-36.05 182.59,-46.41 189.53,-45.53\"/>\n", + "<text text-anchor=\"middle\" x=\"205.11\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b]->[b,c] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[b]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.098,-179.68C169.884,-169.016 157.494,-155.278 145.606,-144 141.59,-140.191 137.209,-136.327 132.829,-132.626\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"134.967,-129.851 125.027,-126.185 130.51,-135.25 134.967,-129.851\"/>\n", - "<text text-anchor=\"middle\" x=\"169.604\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[b]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M187.28,-173.95C177.09,-164.1 163.84,-151.6 151.61,-141 147.17,-137.15 142.38,-133.18 137.66,-129.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"139.83,-126.61 129.84,-123.09 135.46,-132.07 139.83,-126.61\"/>\n", + "<text text-anchor=\"middle\" x=\"177.11\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [b]->[b] -->\n", - "<g id=\"edge18\" class=\"edge\"><title>[b]->[b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M220.846,-206.242C230.629,-206.419 238.606,-203.672 238.606,-198 238.606,-194.544 235.644,-192.173 231.116,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"231.169,-187.374 220.846,-189.758 230.403,-194.332 231.169,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"245.604\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>[b]->[b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M231.85,-199.87C241.63,-200.04 249.61,-197.41 249.61,-192 249.61,-188.7 246.65,-186.44 242.12,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"242.16,-181.7 231.85,-184.13 241.43,-188.66 242.16,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"259.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a,b] -->\n", - "<g id=\"node15\" class=\"node\"><title>[a,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"282.606,-126 228.606,-126 228.606,-90 282.606,-90 282.606,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"255.606\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"298.61,-123 244.61,-123 244.61,-87 298.61,-87 298.61,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"271.61\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", "</g>\n", "<!-- [b]->[a,b] -->\n", - "<g id=\"edge20\" class=\"edge\"><title>[b]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M205.855,-179.614C214.914,-166.755 227.397,-149.038 237.592,-134.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"240.694,-136.241 243.593,-126.05 234.972,-132.209 240.694,-136.241\"/>\n", - "<text text-anchor=\"middle\" x=\"237.604\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>[b]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M218.17,-173.8C227.79,-161.59 240.87,-144.99 251.68,-131.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"254.63,-133.2 258.07,-123.18 249.13,-128.86 254.63,-133.2\"/>\n", + "<text text-anchor=\"middle\" x=\"251.11\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a,b]->[a,b,c] -->\n", - "<g id=\"edge22\" class=\"edge\"><title>[a,b]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M242.644,-89.9856C234.067,-79.1861 222.285,-65.1893 210.606,-54 206.585,-50.1487 202.159,-46.3001 197.7,-42.6389\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"199.722,-39.7756 189.717,-36.2911 195.366,-45.2545 199.722,-39.7756\"/>\n", - "<text text-anchor=\"middle\" x=\"233.604\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>[a,b]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M254.71,-86.64C245.12,-76.92 232.84,-64.64 221.61,-54 217.82,-50.42 213.78,-46.68 209.79,-43.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.01,-40.34 202.24,-36.24 207.32,-45.54 212.01,-40.34\"/>\n", + "<text text-anchor=\"middle\" x=\"246.11\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a,b]->[a,b] -->\n", - "<g id=\"edge24\" class=\"edge\"><title>[a,b]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M282.846,-116.242C292.629,-116.419 300.606,-113.672 300.606,-108 300.606,-104.544 297.644,-102.173 293.116,-100.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"293.169,-97.3739 282.846,-99.7581 292.403,-104.332 293.169,-97.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"307.604\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>[a,b]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M298.85,-112.87C308.63,-113.04 316.61,-110.41 316.61,-105 316.61,-101.7 313.65,-99.44 309.12,-98.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"309.16,-94.7 298.85,-97.13 308.43,-101.66 309.16,-94.7\"/>\n", + "<text text-anchor=\"middle\" x=\"326.11\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a] -->\n", - "<g id=\"node18\" class=\"node\"><title>[a]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"373.606,-216 319.606,-216 319.606,-180 373.606,-180 373.606,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"346.606\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"395.61,-210 341.61,-210 341.61,-174 395.61,-174 395.61,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"368.61\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a]</text>\n", "</g>\n", "<!-- [a]->[a,b,c] -->\n", - "<g id=\"edge26\" class=\"edge\"><title>[a]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M347.226,-179.804C347.149,-156.832 343.725,-116.013 322.606,-90 292.574,-53.0088 239.137,-34.5634 203.044,-25.9056\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"203.427,-22.4042 192.902,-23.6194 201.888,-29.2328 203.427,-22.4042\"/>\n", - "<text text-anchor=\"middle\" x=\"346.604\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>[a]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M369.2,-173.8C369.04,-151.29 365.5,-111.8 344.61,-87 313.89,-50.54 260.29,-33.25 223.2,-25.32\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"223.7,-21.85 213.21,-23.32 222.33,-28.71 223.7,-21.85\"/>\n", + "<text text-anchor=\"middle\" x=\"371.11\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a]->[a,b] -->\n", - "<g id=\"edge28\" class=\"edge\"><title>[a]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M332.098,-179.68C322.884,-169.016 310.494,-155.278 298.606,-144 294.59,-140.191 290.209,-136.327 285.829,-132.626\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"287.967,-129.851 278.027,-126.185 283.51,-135.25 287.967,-129.851\"/>\n", - "<text text-anchor=\"middle\" x=\"322.604\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>[a]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M351.28,-173.95C341.09,-164.1 327.84,-151.6 315.61,-141 311.17,-137.15 306.38,-133.18 301.66,-129.35\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"303.83,-126.61 293.84,-123.09 299.46,-132.07 303.83,-126.61\"/>\n", + "<text text-anchor=\"middle\" x=\"341.11\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [a]->[a] -->\n", - "<g id=\"edge30\" class=\"edge\"><title>[a]->[a]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M373.846,-206.242C383.629,-206.419 391.606,-203.672 391.606,-198 391.606,-194.544 388.644,-192.173 384.116,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"384.169,-187.374 373.846,-189.758 383.403,-194.332 384.169,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"398.604\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>[a]->[a]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M395.85,-199.87C405.63,-200.04 413.61,-197.41 413.61,-192 413.61,-188.7 410.65,-186.44 406.12,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"406.16,-181.7 395.85,-184.13 405.43,-188.66 406.16,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"423.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- [] -->\n", - "<g id=\"node22\" class=\"node\"><title>[]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"184.606,-306 130.606,-306 130.606,-270 184.606,-270 184.606,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"157.606\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"199.61,-297 145.61,-297 145.61,-261 199.61,-261 199.61,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"172.61\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", "</g>\n", "<!-- []->[a,b,c] -->\n", - "<g id=\"edge32\" class=\"edge\"><title>[]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M130.501,-283.347C94.4995,-276.875 32.244,-259.674 4.60554,-216 -3.95044,-202.48 1.88589,-195.767 4.60554,-180 15.1162,-119.065 13.6017,-90.376 63.6055,-54 82.7738,-40.0558 107.931,-31.3434 128.465,-26.0986\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"129.507,-29.4484 138.425,-23.7286 127.887,-22.6385 129.507,-29.4484\"/>\n", - "<text text-anchor=\"middle\" x=\"17.6041\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>[]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M145.58,-276.1C106.63,-271.73 35.98,-257.34 4.61,-210 -4.23,-196.66 2.48,-189.86 4.61,-174 12.55,-114.7 14.72,-85.46 65.61,-54 88.86,-39.63 118.36,-30.85 141.93,-25.69\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"142.87,-29.07 151.96,-23.62 141.46,-22.21 142.87,-29.07\"/>\n", + "<text text-anchor=\"middle\" x=\"19.11\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[c] -->\n", - "<g id=\"edge34\" class=\"edge\"><title>[]->[c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M131.92,-269.924C123.738,-264.338 114.711,-258.02 106.608,-252 94.0787,-242.69 80.5838,-231.982 69.0817,-222.638\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.0586,-219.733 61.1008,-216.115 66.6287,-225.153 71.0586,-219.733\"/>\n", - "<text text-anchor=\"middle\" x=\"114.604\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>[]->[c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M145.54,-264.56C133.67,-258.38 119.71,-250.72 107.61,-243 94.81,-234.84 81.28,-225 69.76,-216.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.82,-213.38 61.76,-210.04 67.54,-218.92 71.82,-213.38\"/>\n", + "<text text-anchor=\"middle\" x=\"117.11\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[b,c] -->\n", - "<g id=\"edge36\" class=\"edge\"><title>[]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M152.332,-269.933C142.723,-238.833 122.299,-172.735 110.841,-135.652\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"114.159,-134.537 107.863,-126.016 107.471,-136.603 114.159,-134.537\"/>\n", - "<text text-anchor=\"middle\" x=\"142.604\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>[]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M166.14,-260.88C154.8,-230.87 131.26,-168.58 117.74,-132.81\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"120.86,-131.17 114.05,-123.05 114.31,-133.64 120.86,-131.17\"/>\n", + "<text text-anchor=\"middle\" x=\"155.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[b] -->\n", - "<g id=\"edge38\" class=\"edge\"><title>[]->[b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M164.718,-269.614C169.879,-256.998 176.953,-239.705 182.809,-225.391\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"186.083,-226.631 186.63,-216.05 179.605,-223.981 186.083,-226.631\"/>\n", - "<text text-anchor=\"middle\" x=\"186.604\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>[]->[b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.08,-260.8C183.51,-249.05 189.46,-233.24 194.5,-219.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"197.89,-220.77 198.14,-210.18 191.34,-218.3 197.89,-220.77\"/>\n", + "<text text-anchor=\"middle\" x=\"199.11\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[a,b] -->\n", - "<g id=\"edge40\" class=\"edge\"><title>[]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M184.789,-276.902C209.602,-266.052 244.75,-246.188 260.606,-216 273.595,-191.27 269.62,-158.722 264.116,-136.045\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"267.416,-134.838 261.447,-126.084 260.654,-136.649 267.416,-134.838\"/>\n", - "<text text-anchor=\"middle\" x=\"276.604\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>[]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M199.78,-268.99C225.06,-258.98 261.22,-240.15 277.61,-210 290.51,-186.27 286.32,-154.83 280.58,-132.76\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"283.92,-131.69 277.8,-123.04 277.19,-133.62 283.92,-131.69\"/>\n", + "<text text-anchor=\"middle\" x=\"295.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[a] -->\n", - "<g id=\"edge42\" class=\"edge\"><title>[]->[a]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M184.732,-285.403C215.199,-282.528 265.145,-274.487 301.606,-252 312.923,-245.02 322.833,-234.234 330.451,-224.209\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"333.306,-226.234 336.291,-216.068 327.618,-222.153 333.306,-226.234\"/>\n", - "<text text-anchor=\"middle\" x=\"328.604\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>[]->[a]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M199.78,-275.93C230.37,-272.63 280.74,-264.2 318.61,-243 329.88,-236.69 340.32,-227.13 348.73,-218.05\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"351.58,-220.1 355.55,-210.28 346.32,-215.48 351.58,-220.1\"/>\n", + "<text text-anchor=\"middle\" x=\"348.11\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "<!-- []->[] -->\n", - "<g id=\"edge44\" class=\"edge\"><title>[]->[]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M184.846,-296.242C194.629,-296.419 202.606,-293.672 202.606,-288 202.606,-284.544 199.644,-282.173 195.116,-280.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"195.169,-277.374 184.846,-279.758 194.403,-284.332 195.169,-277.374\"/>\n", - "<text text-anchor=\"middle\" x=\"209.604\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>[]->[]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M199.85,-286.87C209.63,-287.04 217.61,-284.41 217.61,-279 217.61,-275.7 214.65,-273.44 210.12,-272.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"210.16,-268.7 199.85,-271.13 209.43,-275.66 210.16,-268.7\"/>\n", + "<text text-anchor=\"middle\" x=\"227.11\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">tw</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -1504,7 +1533,7 @@ "<Dot visualization: expr_as_graph [TWTW={[],[a],[a,b],[b],[b,c],[c],[a,b,c]}(\"tw\",{x,y|(x,y):teilwort & y:TW})]>" ] }, - "execution_count": 143, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -1515,7 +1544,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1524,150 +1553,174 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"517pt\" height=\"314pt\"\n", - " viewBox=\"0.00 0.00 517.25 314.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 310)\">\n", + "<svg width=\"558pt\" height=\"305pt\"\n", + " viewBox=\"0.00 0.00 557.67 305.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 301)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-310 514.25,-310 514.25,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-301 553.67,-301 553.67,4 -4,4\"/>\n", "<!-- [a,b,c] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"369.041,-36 315.041,-36 315.041,-0 369.041,-0 369.041,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"342.041\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"397.17,-36 336.17,-36 336.17,0 397.17,0 397.17,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"366.67\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", "</g>\n", "<!-- [a,b,c]->[a,b,c] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,b,c]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M369.282,-26.2419C379.065,-26.4192 387.041,-23.6719 387.041,-18 387.041,-14.5437 384.079,-12.1734 379.551,-10.8891\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"379.605,-7.3739 369.282,-9.75806 378.838,-14.3318 379.605,-7.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"404.145\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,b,c]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M397.46,-25.87C407.34,-25.79 415.17,-23.17 415.17,-18 415.17,-14.77 412.11,-12.53 407.41,-11.29\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"407.8,-7.81 397.46,-10.13 406.98,-14.77 407.8,-7.81\"/>\n", + "<text text-anchor=\"middle\" x=\"436.17\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [c] -->\n", - "<g id=\"node3\" class=\"node\"><title>[c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"69.041,-216 15.041,-216 15.041,-180 69.041,-180 69.041,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"42.041\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[c]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"69.67,-210 15.67,-210 15.67,-174 69.67,-174 69.67,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"42.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[c]</text>\n", "</g>\n", "<!-- [c]->[c] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[c]->[c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M69.2817,-206.242C79.0649,-206.419 87.041,-203.672 87.041,-198 87.041,-194.544 84.0792,-192.173 79.5515,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"79.6048,-187.374 69.2817,-189.758 78.8385,-194.332 79.6048,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"104.145\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[c]->[c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M69.91,-199.87C79.7,-200.04 87.67,-197.41 87.67,-192 87.67,-188.7 84.71,-186.44 80.18,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.23,-181.7 69.91,-184.13 79.49,-188.66 80.23,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"108.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [b,c] -->\n", - "<g id=\"node5\" class=\"node\"><title>[b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"212.041,-126 158.041,-126 158.041,-90 212.041,-90 212.041,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"185.041\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[b,c]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"214.67,-123 160.67,-123 160.67,-87 214.67,-87 214.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"187.67\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[b,c]</text>\n", "</g>\n", "<!-- [b,c]->[b,c] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[b,c]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.282,-116.242C222.065,-116.419 230.041,-113.672 230.041,-108 230.041,-104.544 227.079,-102.173 222.551,-100.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.605,-97.3739 212.282,-99.7581 221.838,-104.332 222.605,-97.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"247.145\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[b,c]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M214.91,-112.87C224.7,-113.04 232.67,-110.41 232.67,-105 232.67,-101.7 229.71,-99.44 225.18,-98.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"225.23,-94.7 214.91,-97.13 224.49,-101.66 225.23,-94.7\"/>\n", + "<text text-anchor=\"middle\" x=\"253.67\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [b] -->\n", - "<g id=\"node7\" class=\"node\"><title>[b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"263.041,-216 209.041,-216 209.041,-180 263.041,-180 263.041,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"236.041\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[b]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"279.67,-210 225.67,-210 225.67,-174 279.67,-174 279.67,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"252.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[b]</text>\n", "</g>\n", "<!-- [b]->[b,c] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[b]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M225.965,-179.614C218.583,-166.876 208.439,-149.372 200.097,-134.979\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"202.965,-132.947 194.922,-126.05 196.909,-136.457 202.965,-132.947\"/>\n", - "<text text-anchor=\"middle\" x=\"232.145\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[b]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M239.52,-173.8C230.18,-161.59 217.49,-144.99 207,-131.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"209.66,-128.99 200.81,-123.18 204.1,-133.25 209.66,-128.99\"/>\n", + "<text text-anchor=\"middle\" x=\"244.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [b]->[b] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[b]->[b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M263.282,-206.242C273.065,-206.419 281.041,-203.672 281.041,-198 281.041,-194.544 278.079,-192.173 273.551,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"273.605,-187.374 263.282,-189.758 272.838,-194.332 273.605,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"298.145\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[b]->[b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M279.91,-199.87C289.7,-200.04 297.67,-197.41 297.67,-192 297.67,-188.7 294.71,-186.44 290.18,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"290.23,-181.7 279.91,-184.13 289.49,-188.66 290.23,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"318.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [a,b] -->\n", - "<g id=\"node10\" class=\"node\"><title>[a,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"369.041,-126 315.041,-126 315.041,-90 369.041,-90 369.041,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"342.041\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"393.67,-123 339.67,-123 339.67,-87 393.67,-87 393.67,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"366.67\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", "</g>\n", "<!-- [a,b]->[a,b,c] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[a,b]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M342.041,-89.614C342.041,-77.2403 342.041,-60.3686 342.041,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"345.541,-46.0504 342.041,-36.0504 338.541,-46.0504 345.541,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"359.145\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[a,b]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M366.67,-86.8C366.67,-75.16 366.67,-59.55 366.67,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"370.17,-46.18 366.67,-36.18 363.17,-46.18 370.17,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"387.67\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [a,b]->[a,b] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[a,b]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M369.282,-116.242C379.065,-116.419 387.041,-113.672 387.041,-108 387.041,-104.544 384.079,-102.173 379.551,-100.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"379.605,-97.3739 369.282,-99.7581 378.838,-104.332 379.605,-97.3739\"/>\n", - "<text text-anchor=\"middle\" x=\"404.145\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[a,b]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M393.91,-112.87C403.7,-113.04 411.67,-110.41 411.67,-105 411.67,-101.7 408.71,-99.44 404.18,-98.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"404.23,-94.7 393.91,-97.13 403.49,-101.66 404.23,-94.7\"/>\n", + "<text text-anchor=\"middle\" x=\"432.67\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [a] -->\n", - "<g id=\"node13\" class=\"node\"><title>[a]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"457.041,-216 403.041,-216 403.041,-180 457.041,-180 457.041,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"430.041\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"489.67,-210 435.67,-210 435.67,-174 489.67,-174 489.67,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"462.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a]</text>\n", "</g>\n", "<!-- [a]->[a,b,c] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[a]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M434.497,-179.653C439.203,-157.582 444.17,-118.865 430.041,-90 419.039,-67.5242 397.174,-49.8272 377.992,-37.7228\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"379.788,-34.7189 369.416,-32.5577 376.177,-40.7153 379.788,-34.7189\"/>\n", - "<text text-anchor=\"middle\" x=\"455.145\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[a]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M467.44,-173.91C472.47,-152.22 477.79,-114.34 462.67,-87 450.28,-64.58 426.98,-47.8 406.44,-36.52\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.03,-33.41 397.55,-31.88 404.79,-39.61 408.03,-33.41\"/>\n", + "<text text-anchor=\"middle\" x=\"492.67\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [a]->[a,b] -->\n", - "<g id=\"edge18\" class=\"edge\"><title>[a]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M412.655,-179.614C399.432,-166.391 381.073,-148.032 366.389,-133.348\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"368.637,-130.647 359.091,-126.05 363.688,-135.596 368.637,-130.647\"/>\n", - "<text text-anchor=\"middle\" x=\"410.145\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>[a]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M443.25,-173.8C429.06,-161.24 409.65,-144.05 393.92,-130.12\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"395.88,-127.18 386.07,-123.18 391.24,-132.43 395.88,-127.18\"/>\n", + "<text text-anchor=\"middle\" x=\"440.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [a]->[a] -->\n", - "<g id=\"edge20\" class=\"edge\"><title>[a]->[a]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M457.282,-206.242C467.065,-206.419 475.041,-203.672 475.041,-198 475.041,-194.544 472.079,-192.173 467.551,-190.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"467.605,-187.374 457.282,-189.758 466.838,-194.332 467.605,-187.374\"/>\n", - "<text text-anchor=\"middle\" x=\"492.145\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>[a]->[a]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M489.91,-199.87C499.7,-200.04 507.67,-197.41 507.67,-192 507.67,-188.7 504.71,-186.44 500.18,-185.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"500.23,-181.7 489.91,-184.13 499.49,-188.66 500.23,-181.7\"/>\n", + "<text text-anchor=\"middle\" x=\"528.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- [] -->\n", - "<g id=\"node17\" class=\"node\"><title>[]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"212.041,-306 158.041,-306 158.041,-270 212.041,-270 212.041,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"185.041\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"235.67,-297 181.67,-297 181.67,-261 235.67,-261 235.67,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"208.67\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", "</g>\n", "<!-- []->[a,b,c] -->\n", - "<g id=\"edge22\" class=\"edge\"><title>[]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.63,-282.904C99.3364,-272.892 -28.8745,-243.23 6.04098,-180 67.136,-69.3606 230.704,-33.8217 304.731,-23.1954\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"305.543,-26.6173 314.981,-21.8024 304.6,-19.6811 305.543,-26.6173\"/>\n", - "<text text-anchor=\"middle\" x=\"47.1455\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>[]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.21,-275.43C117.36,-268.25 -32.78,-243.68 6.67,-174 71.97,-58.68 246.27,-29.11 325.93,-21.57\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"326.41,-25.04 336.07,-20.68 325.8,-18.07 326.41,-25.04\"/>\n", + "<text text-anchor=\"middle\" x=\"50.67\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[c] -->\n", - "<g id=\"edge24\" class=\"edge\"><title>[]->[c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.781,-276.366C142.874,-270.09 124.341,-261.523 108.832,-252 94.8927,-243.441 80.5428,-232.396 68.734,-222.606\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"70.899,-219.854 61.0008,-216.075 66.3823,-225.202 70.899,-219.854\"/>\n", - "<text text-anchor=\"middle\" x=\"126.145\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>[]->[c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.28,-270.74C160.87,-264.76 132.67,-255.28 109.67,-243 95.87,-235.63 81.81,-225.6 70.15,-216.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"72.12,-213.54 62.13,-210 67.73,-219 72.12,-213.54\"/>\n", + "<text text-anchor=\"middle\" x=\"130.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[b,c] -->\n", - "<g id=\"edge26\" class=\"edge\"><title>[]->[b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M178.998,-269.755C174.353,-255.537 168.321,-234.734 165.832,-216 163.724,-200.139 163.724,-195.861 165.832,-180 167.796,-165.218 171.966,-149.147 175.92,-136.04\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"179.339,-136.834 178.998,-126.245 172.661,-134.735 179.339,-136.834\"/>\n", - "<text text-anchor=\"middle\" x=\"183.145\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>[]->[b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M197.35,-260.96C189.25,-247.7 179.04,-228.5 174.67,-210 168.59,-184.25 173.62,-154.19 179.09,-133.03\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"182.54,-133.7 181.85,-123.13 175.79,-131.82 182.54,-133.7\"/>\n", + "<text text-anchor=\"middle\" x=\"195.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[b] -->\n", - "<g id=\"edge28\" class=\"edge\"><title>[]->[b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M195.117,-269.614C202.499,-256.876 212.643,-239.372 220.985,-224.979\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"224.173,-226.457 226.159,-216.05 218.117,-222.947 224.173,-226.457\"/>\n", - "<text text-anchor=\"middle\" x=\"232.145\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>[]->[b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M217.58,-260.8C223.78,-248.82 232.17,-232.62 239.19,-219.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"242.29,-220.67 243.78,-210.18 236.08,-217.45 242.29,-220.67\"/>\n", + "<text text-anchor=\"middle\" x=\"253.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[a,b] -->\n", - "<g id=\"edge30\" class=\"edge\"><title>[]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.058,-281C244.137,-272.383 296.724,-253.261 324.041,-216 340.867,-193.049 344.103,-159.922 343.928,-136.623\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"347.419,-136.266 343.629,-126.373 340.422,-136.47 347.419,-136.266\"/>\n", - "<text text-anchor=\"middle\" x=\"356.145\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>[]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M235.82,-272.63C268.07,-264.75 320.98,-246.81 348.67,-210 365.22,-188.01 368.55,-156.02 368.47,-133.33\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"371.97,-133.24 368.22,-123.33 364.97,-133.42 371.97,-133.24\"/>\n", + "<text text-anchor=\"middle\" x=\"384.67\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[a] -->\n", - "<g id=\"edge32\" class=\"edge\"><title>[]->[a]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.234,-285.824C248.626,-283.354 314.445,-275.699 365.041,-252 380.147,-244.924 394.75,-233.568 406.275,-223.178\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"408.818,-225.592 413.731,-216.205 404.036,-220.48 408.818,-225.592\"/>\n", - "<text text-anchor=\"middle\" x=\"409.145\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>[]->[a]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M235.74,-276.22C272.01,-273.07 337.85,-264.65 389.67,-243 405.6,-236.34 421.61,-225.9 434.57,-216.27\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"436.8,-218.97 442.6,-210.11 432.54,-213.41 436.8,-218.97\"/>\n", + "<text text-anchor=\"middle\" x=\"437.67\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "<!-- []->[] -->\n", - "<g id=\"edge34\" class=\"edge\"><title>[]->[]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M212.282,-296.242C222.065,-296.419 230.041,-293.672 230.041,-288 230.041,-284.544 227.079,-282.173 222.551,-280.889\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"222.605,-277.374 212.282,-279.758 221.838,-284.332 222.605,-277.374\"/>\n", - "<text text-anchor=\"middle\" x=\"247.145\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>[]->[]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M235.91,-286.87C245.7,-287.04 253.67,-284.41 253.67,-279 253.67,-275.7 250.71,-273.44 246.18,-272.21\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"246.23,-268.7 235.91,-271.13 245.49,-275.66 246.23,-268.7\"/>\n", + "<text text-anchor=\"middle\" x=\"274.67\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">präfix</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -1676,7 +1729,7 @@ "<Dot visualization: expr_as_graph [TWTW={[],[a],[a,b],[b],[b,c],[c],[a,b,c]}(\"präfix\",{x,y|(x,y):präfix & y:TW})]>" ] }, - "execution_count": 144, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1687,7 +1740,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ @@ -1696,10 +1749,157 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 63, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: FormaleSprachen" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "MACHINE FormaleSprachen\n", + "/* Formulierung in B der Grundbegriffe aus dem Foliensatz 1 von Informatik 4 */\n", + "/* erstellt von Michael Leuschel, 2014 */\n", + "SETS\n", + " Alphabet /* Ein Alphabet ist eine endliche, nichtleere Menge von Buchstaben (oder Symbolen). */\n", + " = {a,b,c} /* Hier als Beispiel {a,b,c} */\n", + "ABSTRACT_CONSTANTS\n", + " kat, Worte, Sprachen, kleene, sp, teilwort, praefix\n", + "CONSTANTS\n", + " w1, w2, lambda,\n", + " L1, L2, LeereSprache, KomplementL1, L1L2\n", + "PROPERTIES\n", + " Worte = seq(Alphabet) /* Ein Wort ist eine endliche Folge von Elementen aus dem Alphabet */\n", + " &\n", + " /* Beispiele */\n", + " w1 = [a,a,b,c] & /* in den Folien schreiben wir aabc anstatt [a,a,b,c] */\n", + " w1 : Worte & /* w1 ist ein Wort */\n", + " w2 = [c,a,b,a] &\n", + " w2 : Worte &\n", + " /* Die Laenge eines Wortes ist die Anzahl der Symbole in w */\n", + " /* Beispiel: */\n", + " size(w1) = 4 &\n", + " \n", + "/* Das leere Wort ist das eindeutig bestimmte Wort der Laenge 0 */\n", + " lambda: Worte & size(lambda) = 0 &\n", + "\n", + "/* Die Menge aller Worte bezeichnen wir mit \\Sigma^*. Hier verwenden wir seq(Alphabet) */\n", + "\n", + " /* Eine formale Sprache ist eine jede Teilmenge von \\Sigma^*. */\n", + " Sprachen = {L | L <: Worte} &\n", + " /* Beispiel: */\n", + " L1 = {w1,w2} & L1 : Sprachen &\n", + " L2 = {w2, [a,a,a] } & L2 : Sprachen &\n", + "\n", + " /* Die Leere Sprache ist die Sprache die keine Wörter enthält */\n", + " LeereSprache = {} &\n", + " /* Beachte: */\n", + " LeereSprache /= {lambda} &\n", + "\n", + " /* Die Kardinalität einer Sprache L ist die Anzahl der Wörter von L. \n", + " Beispiel: */\n", + " card(L1) = 2 & card({lambda}) = 1 & card(LeereSprache) = 0 &\n", + "\n", + " /* Beispiele für die Vereinigung von Sprachen: */\n", + " L1 \\/ L2 = {x| x:Worte & (x:L1 or x:L2)} &\n", + "/* Beispiele für die Durchchnitt von Sprachen: */\n", + " L1 /\\ L2 = {x| x:Worte & x:L1 & x:L2} &\n", + "/* Beispiele für die Differenz von Sprachen: */\n", + " L1 - L2 = {x| x:Worte & x:L1 & x/: L2} &\n", + "/* Beispiele für das Komplement von Sprachen: */\n", + " KomplementL1 = Worte - L1 /* kann man auch so schreiben {x| x:Worte & x/: L1} */ &\n", + " w1 /: KomplementL1 & [a,a,a] : KomplementL1 & lambda : KomplementL1 &\n", + "\n", + " /* Konkatenation von Wörtern wird in B mit ^ geschrieben: */\n", + " w1^w2 = [a,a,b,c,c,a,b,a] &\n", + " w1^lambda = w1 & lambda^w1 = w1 &\n", + "\n", + " /* Verkettung von Sprachen */\n", + " L1L2 = {w | #(a,b).(a:L1 & b:L2 & w = a^b)}\n", + "\n", + " & kat = %(x,y).(x:Worte & y:Worte | x^y) /* Die Konkatenierung als explizite Funktion */\n", + " & kat(w1,w2) = [a,a,b,c,c,a,b,a] \n", + " & L1L2 = kat[L1*L2]\n", + "\n", + " /* Eine rekursive Definition von A^n: */\n", + " & kleene = %(A,n).(A : Sprachen & n=0|{lambda}) \\/\n", + " %(A,n).(A : Sprachen & n>0| kat[A*kleene(A,n-1)])\n", + " & kleene(L1,1) = L1\n", + " & kleene(L2,1) = L2\n", + "/* A^* ist momentan schwieriger darstellbar, zumindest so, dass man mit ProB damit\n", + " arbeiten könnte */\n", + "\n", + " & /* Die Spiegelbildoperation */\n", + " sp = %u.(u:Worte| %i.(i:dom(u)|u(size(u)+1-i)))\n", + " & sp(w1) = [c,b,a,a]\n", + " & sp(sp(w1)) = w1\n", + " & sp(lambda) = lambda\n", + "\n", + " /* Die Spiegelung einer Sprache bekommt man einfach durch das relational image: */\n", + " & sp[L1] = {sp(w1),sp(w2)}\n", + " & sp[sp[L1]] = L1\n", + " & sp[sp[L2]] = L2\n", + "\n", + " /* Die Teilwortrelation */\n", + " & teilwort = {u,v | u:Worte & v:Worte & #(v1,v2).(v1^u^v2 = v)}\n", + " & [a,a] |-> [c,b,a,a,b] : teilwort\n", + " & [a,a,a] |-> [c,b,a,a,b] /: teilwort\n", + " /* Wir können alle Teilworte durch das relational image der Umkehrrelation berechnen: */\n", + " & teilwort~[{[a,a,b]}] = { lambda, [a], [b], [a,a],[a,b], [a,a,b] }\n", + "\n", + " /* Die Anfangswortrelation */\n", + " & praefix = {u,v | u:Worte & v:Worte & #(w).(u^w = v)}\n", + " & [a,a] |-> [c,b,a,a,b] /: praefix\n", + " & [c,b] |-> [c,b,a,a,b] : praefix\n", + " /* Wir können alle Präfixe durch das relational image der Umkehrrelation berechnen: */\n", + " & praefix~[{[a,a,b]}] = { lambda, [a], [a,a], [a,a,b] }\n", + "ASSERTIONS\n", + " card(L1L2) = 4\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "ename": "IllegalArgumentException", + "evalue": "Executing operation $initialise_machine with predicate 1=1 produced errors: Could not execute operation INITIALISATION in state root", + "output_type": "error", + "traceback": [ + "\u001b[1m\u001b[31mjava.lang.IllegalArgumentException: Executing operation $initialise_machine with predicate 1=1 produced errors: Could not execute operation INITIALISATION in state root\u001b[0m" + ] + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "ename": "CommandExecutionException", + "evalue": ":eval: NOT-INITIALISED", + "output_type": "error", + "traceback": [ + "\u001b[1m\u001b[31m:eval: NOT-INITIALISED\u001b[0m" + ] + } + ], + "source": [ + "kleene(L1, 2)" + ] } ], "metadata": { diff --git a/info4/kapitel-1/Grammatiken.ipynb b/info4/kapitel-1/Grammatiken.ipynb index ea71fb552165b1ee6382e718cffff4a86f5ce71e..b7f35c32954122df213dfe0f30879693743d4be0 100644 --- a/info4/kapitel-1/Grammatiken.ipynb +++ b/info4/kapitel-1/Grammatiken.ipynb @@ -6,7 +6,7 @@ "source": [ "## Grammatiken und Chomsky-Hierarchie\n", "\n", - "Dieses Notebook begleitet Teil 2 der Vorlesung 3 und führt am Ende die Chomsky-Hierarchie ein" + "Dieses Notebook begleitet Teil 2 der Vorlesung 3 und führt am Ende die Chomsky-Hierarchie ein." ] }, { @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -38,7 +38,7 @@ "Loaded machine: Grammatik" ] }, - "execution_count": 4, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -74,7 +74,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 5, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -103,7 +103,7 @@ "\tRHS = []" ] }, - "execution_count": 6, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -121,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -133,7 +133,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 7, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -159,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -168,7 +168,7 @@ "Loaded machine: Grammatik" ] }, - "execution_count": 8, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -199,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -208,7 +208,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 9, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -238,7 +238,7 @@ "/*@symbolic*/ {u,v∣∃(x,z,p,q)·(p ↦ q ∈ {([S]↦[]),([S]↦[a,S,b])} ∧ u = x ⌒ p ⌒ z ∧ v = x ⌒ q ⌒ z)}" ] }, - "execution_count": 10, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -249,7 +249,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -261,7 +261,7 @@ "TRUE" ] }, - "execution_count": 14, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -272,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -284,7 +284,7 @@ "FALSE" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -295,7 +295,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -313,7 +313,7 @@ "\tx = []" ] }, - "execution_count": 15, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -331,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -343,7 +343,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 16, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -354,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -366,7 +366,7 @@ "{[a,b,S],[a,S,b],[a,S,b,a,S,b],[a,a,S,b,b,S]}" ] }, - "execution_count": 18, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -384,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -396,7 +396,7 @@ "{[a,b],[a,a,S,b,b]}" ] }, - "execution_count": 19, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -407,7 +407,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -419,7 +419,7 @@ "{[a,a,b,b],[a,a,a,S,b,b,b]}" ] }, - "execution_count": 20, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -443,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -455,7 +455,7 @@ "TRUE" ] }, - "execution_count": 23, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -473,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -485,7 +485,7 @@ "{[S]}" ] }, - "execution_count": 24, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -496,7 +496,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -508,7 +508,7 @@ "{[],[a,S,b]}" ] }, - "execution_count": 25, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -519,7 +519,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -531,7 +531,7 @@ "{[a,b],[a,a,S,b,b]}" ] }, - "execution_count": 26, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -542,7 +542,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -554,7 +554,7 @@ "{[a,a,b,b],[a,a,a,S,b,b,b]}" ] }, - "execution_count": 27, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -565,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -577,7 +577,7 @@ "{[a,a,a,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 28, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +600,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -612,7 +612,7 @@ "{[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 29, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -625,12 +625,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Wenn wir mit $\\Sigma^*$ schneiden bekommen wir Wörter der von der Grammatik generierten Sprache:" + "Wenn wir mit $\\Sigma^*$ schneiden, bekommen wir Wörter der von der Grammatik generierten Sprache:" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -642,7 +642,7 @@ "{[],[a,b],[a,a,b,b],[a,a,a,b,b,b]}" ] }, - "execution_count": 30, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -672,7 +672,7 @@ "{[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}" ] }, - "execution_count": 31, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -683,7 +683,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -692,7 +692,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = FALSE\n" ] }, - "execution_count": 32, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -703,7 +703,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -712,106 +712,123 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"354pt\" height=\"404pt\"\n", - " viewBox=\"0.00 0.00 354.00 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n", + "<svg width=\"352pt\" height=\"392pt\"\n", + " viewBox=\"0.00 0.00 351.50 392.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 388)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-400 351,-400 351,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 347.5,-388 347.5,4 -4,4\"/>\n", "<!-- [a,a,a,S,b,b,b] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,a,a,S,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"160.312,-126 67.6878,-126 67.6878,-90 160.312,-90 160.312,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"114\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,b,b,b]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,a,a,S,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"197,-123 82,-123 82,-87 197,-87 197,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"139.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,a,S,b,b,b,b] -->\n", - "<g id=\"node3\" class=\"node\"><title>[a,a,a,a,S,b,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"112.472,-36 -0.471819,-36 -0.471819,-0 112.472,-0 112.472,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"56\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,b,b,b,b]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[a,a,a,a,S,b,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"141,-36 0,-36 0,0 141,0 141,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"70.5\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,b,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M102.541,-89.614C94.0659,-76.7551 82.389,-59.0384 72.8518,-44.5682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"75.6633,-42.4739 67.2378,-36.0504 69.8186,-46.3261 75.6633,-42.4739\"/>\n", - "<text text-anchor=\"middle\" x=\"99.5526\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,a,a,S,b,b,b]->[a,a,a,a,S,b,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.54,-86.8C115.62,-74.59 102.15,-57.99 91.02,-44.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"93.46,-41.73 84.44,-36.18 88.03,-46.15 93.46,-41.73\"/>\n", + "<text text-anchor=\"middle\" x=\"120.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,b,b,b] -->\n", - "<g id=\"node5\" class=\"node\"><title>[a,a,a,b,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"213.349,-36 130.651,-36 130.651,-0 213.349,-0 213.349,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"172\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,b,b]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[a,a,a,b,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"260,-36 159,-36 159,0 260,0 260,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"209.5\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,b,b]</text>\n", "</g>\n", "<!-- [a,a,a,S,b,b,b]->[a,a,a,b,b,b] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[a,a,a,S,b,b,b]->[a,a,a,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M125.459,-89.614C133.934,-76.7551 145.611,-59.0384 155.148,-44.5682\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.181,-46.3261 160.762,-36.0504 152.337,-42.4739 158.181,-46.3261\"/>\n", - "<text text-anchor=\"middle\" x=\"157.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[a,a,a,S,b,b,b]->[a,a,a,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M153.67,-86.8C163.72,-74.59 177.39,-57.99 188.68,-44.28\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"191.7,-46.12 195.36,-36.18 186.3,-41.67 191.7,-46.12\"/>\n", + "<text text-anchor=\"middle\" x=\"190.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,b,b] -->\n", - "<g id=\"node6\" class=\"node\"><title>[a,a,S,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"222.154,-216 149.846,-216 149.846,-180 222.154,-180 222.154,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"186\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,b,b]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[a,a,S,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"240,-210 151,-210 151,-174 240,-174 240,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"195.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,b,b]</text>\n", "</g>\n", "<!-- [a,a,S,b,b]->[a,a,a,S,b,b,b] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[a,a,S,b,b]->[a,a,a,S,b,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M171.775,-179.614C161.155,-166.634 146.485,-148.704 134.585,-134.16\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"136.992,-131.574 127.95,-126.05 131.574,-136.006 136.992,-131.574\"/>\n", - "<text text-anchor=\"middle\" x=\"165.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[a,a,S,b,b]->[a,a,a,S,b,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M184.17,-173.8C176.2,-161.7 165.39,-145.3 156.41,-131.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"159.24,-129.6 150.82,-123.18 153.39,-133.45 159.24,-129.6\"/>\n", + "<text text-anchor=\"middle\" x=\"182.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,b] -->\n", - "<g id=\"node9\" class=\"node\"><title>[a,a,b,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"241.188,-126 178.812,-126 178.812,-90 241.188,-90 241.188,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"210\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,b]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,a,b,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"290,-123 215,-123 215,-87 290,-87 290,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"252.5\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,b]</text>\n", "</g>\n", "<!-- [a,a,S,b,b]->[a,a,b,b] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[a,a,S,b,b]->[a,a,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M190.742,-179.614C194.149,-167.119 198.808,-150.037 202.69,-135.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"206.095,-136.619 205.35,-126.05 199.342,-134.777 206.095,-136.619\"/>\n", - "<text text-anchor=\"middle\" x=\"209.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[a,a,S,b,b]->[a,a,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M207.03,-173.8C215.15,-161.7 226.14,-145.3 235.29,-131.67\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"238.32,-133.43 240.98,-123.18 232.51,-129.53 238.32,-133.43\"/>\n", + "<text text-anchor=\"middle\" x=\"238.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,b] -->\n", - "<g id=\"node10\" class=\"node\"><title>[a,S,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"274,-306 220,-306 220,-270 274,-270 274,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"247\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,b]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a,S,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"271.5,-297 209.5,-297 209.5,-261 271.5,-261 271.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"240.5\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,b]</text>\n", "</g>\n", "<!-- [a,S,b]->[a,a,S,b,b] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[a,S,b]->[a,a,S,b,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M234.948,-269.614C226.035,-256.755 213.754,-239.038 203.723,-224.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"206.393,-222.275 197.819,-216.05 200.64,-226.263 206.393,-222.275\"/>\n", - "<text text-anchor=\"middle\" x=\"230.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[a,S,b]->[a,a,S,b,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M231.39,-260.8C225.05,-248.82 216.47,-232.62 209.29,-219.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"212.37,-217.38 204.59,-210.18 206.18,-220.65 212.37,-217.38\"/>\n", + "<text text-anchor=\"middle\" x=\"232.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,b] -->\n", - "<g id=\"node13\" class=\"node\"><title>[a,b]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"295,-216 241,-216 241,-180 295,-180 295,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"268\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[a,b]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"312.5,-210 258.5,-210 258.5,-174 312.5,-174 312.5,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"285.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b]</text>\n", "</g>\n", "<!-- [a,S,b]->[a,b] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[a,S,b]->[a,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M251.149,-269.614C254.131,-257.119 258.207,-240.037 261.603,-225.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"265.014,-226.59 263.931,-216.05 258.205,-224.965 265.014,-226.59\"/>\n", - "<text text-anchor=\"middle\" x=\"268.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[a,S,b]->[a,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M249.61,-260.8C255.95,-248.82 264.53,-232.62 271.71,-219.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"274.82,-220.65 276.41,-210.18 268.63,-217.38 274.82,-220.65\"/>\n", + "<text text-anchor=\"middle\" x=\"277.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S] -->\n", - "<g id=\"node14\" class=\"node\"><title>[S]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"318,-396 264,-396 264,-360 318,-360 318,-396\"/>\n", - "<text text-anchor=\"middle\" x=\"291\" y=\"-373.8\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>[S]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"305.5,-384 251.5,-384 251.5,-348 305.5,-348 305.5,-384\"/>\n", + "<text text-anchor=\"middle\" x=\"278.5\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", "</g>\n", "<!-- [S]->[a,S,b] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[S]->[a,S,b]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M282.307,-359.614C275.999,-346.998 267.353,-329.705 260.195,-315.391\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"263.128,-313.429 255.525,-306.05 256.867,-316.56 263.128,-313.429\"/>\n", - "<text text-anchor=\"middle\" x=\"281.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[S]->[a,S,b]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M270.81,-347.8C265.5,-335.93 258.35,-319.93 252.32,-306.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"255.46,-304.88 248.18,-297.18 249.06,-307.73 255.46,-304.88\"/>\n", + "<text text-anchor=\"middle\" x=\"273.5\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [] -->\n", - "<g id=\"node17\" class=\"node\"><title>[]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"346,-306 292,-306 292,-270 346,-270 346,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"319\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>[]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"343.5,-297 289.5,-297 289.5,-261 343.5,-261 343.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"316.5\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[]</text>\n", "</g>\n", "<!-- [S]->[] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[S]->[]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M296.532,-359.614C300.508,-347.119 305.943,-330.037 310.471,-315.804\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"313.878,-316.641 313.575,-306.05 307.208,-314.518 313.878,-316.641\"/>\n", - "<text text-anchor=\"middle\" x=\"316.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[S]->[]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M286.19,-347.8C291.5,-335.93 298.65,-319.93 304.68,-306.45\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"307.94,-307.73 308.82,-297.18 301.54,-304.88 307.94,-307.73\"/>\n", + "<text text-anchor=\"middle\" x=\"310.5\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -820,7 +837,7 @@ "<Dot visualization: expr_as_graph [SFSF={[],[a,b],[S],[a,a,b,b],[a,S,b],[a,a,a,b,b,b],[a,a,S,b,b],[a,a,a,S,b,b,b],[a,a,a,a,S,b,b,b,b]}(\"abl\",SF<|abl|>SF)]>" ] }, - "execution_count": 33, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -838,7 +855,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -847,7 +864,7 @@ "Loaded machine: Grammatik2" ] }, - "execution_count": 34, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -883,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -892,7 +909,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 35, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -903,7 +920,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -915,7 +932,7 @@ "{[S],[a,b,c],[a,b,C],[a,S,B,C],[a,B,C],[a,a,b,c,B,C],[a,a,b,C,B,C],[a,a,b,B,C,C],[a,a,B,C,B,C],[a,a,B,B,C,C],[a,a,S,B,C,B,C],[a,a,S,B,B,C,C],[a,a,a,S,B,C,B,B,C,C],[a,a,a,S,B,B,C,C,B,C],[a,a,a,S,B,C,B,C,B,C],[a,a,a,B,B,C,C,B,C],[a,a,a,b,C,B,C,B,C],[a,a,a,B,C,B,B,C,C],[a,a,a,B,C,B,C,B,C],[a,a,a,a,B,C,B,C,B,C,B,C],[a,a,a,a,S,B,C,B,C,B,C,B,C]}" ] }, - "execution_count": 36, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +943,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -938,7 +955,7 @@ "{[a,b,c]}" ] }, - "execution_count": 37, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -949,7 +966,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -958,7 +975,7 @@ "Preference changed: DOT_DECOMPOSE_NODES = FALSE\n" ] }, - "execution_count": 38, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -969,7 +986,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -978,256 +995,300 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"1329pt\" height=\"404pt\"\n", - " viewBox=\"0.00 0.00 1329.00 404.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 400)\">\n", + "<svg width=\"1547pt\" height=\"392pt\"\n", + " viewBox=\"0.00 0.00 1546.50 392.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 388)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-400 1326,-400 1326,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 1542.5,-388 1542.5,4 -4,4\"/>\n", "<!-- [a,a,a,B,C,B,C,B,C] -->\n", - "<g id=\"node1\" class=\"node\"><title>[a,a,a,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1031.49,-126 904.511,-126 904.511,-90 1031.49,-90 1031.49,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"968\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,C,B,C]</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>[a,a,a,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1202.5,-123 1051.5,-123 1051.5,-87 1202.5,-87 1202.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"1127\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"node3\" class=\"node\"><title>[a,a,a,B,C,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1031.49,-36 904.511,-36 904.511,-0 1031.49,-0 1031.49,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"968\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,B,C,C]</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>[a,a,a,B,C,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1202.5,-36 1051.5,-36 1051.5,0 1202.5,0 1202.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1127\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,C,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"edge2\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M968,-89.614C968,-77.2403 968,-60.3686 968,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"971.5,-46.0504 968,-36.0504 964.5,-46.0504 971.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"976.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1127,-86.8C1127,-75.16 1127,-59.55 1127,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1130.5,-46.18 1127,-36.18 1123.5,-46.18 1130.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"1138\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,b,C,B,C,B,C] -->\n", - "<g id=\"node5\" class=\"node\"><title>[a,a,a,b,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1175.24,-36 1050.76,-36 1050.76,-0 1175.24,-0 1175.24,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"1113\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,C,B,C,B,C]</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>[a,a,a,b,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1369.5,-36 1220.5,-36 1220.5,0 1369.5,0 1369.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1295\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,b,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C] -->\n", - "<g id=\"edge4\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M996.302,-89.8238C1019.06,-76.0139 1051.2,-56.5033 1076,-41.4559\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1078.04,-44.3132 1084.77,-36.1329 1074.4,-38.3291 1078.04,-44.3132\"/>\n", - "<text text-anchor=\"middle\" x=\"1062.55\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,b,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1161,-86.8C1187.27,-73.51 1223.8,-55.02 1252.09,-40.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1254,-43.67 1261.34,-36.03 1250.84,-37.42 1254,-43.67\"/>\n", + "<text text-anchor=\"middle\" x=\"1233\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,B,B,C,C,B,C] -->\n", - "<g id=\"node7\" class=\"node\"><title>[a,a,a,B,B,C,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1321.49,-36 1194.51,-36 1194.51,-0 1321.49,-0 1321.49,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"1258\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,B,C,C,B,C]</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>[a,a,a,B,B,C,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1538.5,-36 1387.5,-36 1387.5,0 1538.5,0 1538.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"1463\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,B,B,C,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C] -->\n", - "<g id=\"edge6\" class=\"edge\"><title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M1024.26,-89.9284C1072.28,-75.3554 1141.41,-54.379 1192.03,-39.0179\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1193.34,-42.2771 1201.9,-36.0241 1191.31,-35.5787 1193.34,-42.2771\"/>\n", - "<text text-anchor=\"middle\" x=\"1147.55\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>[a,a,a,B,C,B,C,B,C]->[a,a,a,B,B,C,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1194.59,-86.9C1249.84,-72.92 1327.98,-53.16 1385.71,-38.55\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1386.68,-41.92 1395.52,-36.07 1384.96,-35.13 1386.68,-41.92\"/>\n", + "<text text-anchor=\"middle\" x=\"1327\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C] -->\n", - "<g id=\"node8\" class=\"node\"><title>[a,a,a,S,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"716.45,-126 577.55,-126 577.55,-90 716.45,-90 716.45,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"647\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,C,B,C]</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"836,-123 672,-123 672,-87 836,-87 836,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"754\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,a,S,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"node10\" class=\"node\"><title>[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"546.992,-36 373.008,-36 373.008,-0 546.992,-0 546.992,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"460\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,B,C,B,C,B,C,B,C]</text>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"638.5,-36 431.5,-36 431.5,0 638.5,0 638.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"535\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,S,B,C,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"edge8\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M610.501,-89.8238C580.511,-75.7111 537.87,-55.6449 505.629,-40.4725\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"506.946,-37.224 496.407,-36.1329 503.965,-43.5578 506.946,-37.224\"/>\n", - "<text text-anchor=\"middle\" x=\"579.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,S,B,C,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M709.95,-86.9C674.97,-73.33 625.94,-54.29 588.67,-39.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"589.57,-36.43 578.98,-36.07 587.04,-42.95 589.57,-36.43\"/>\n", + "<text text-anchor=\"middle\" x=\"669\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,a,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"node12\" class=\"node\"><title>[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"728.529,-36 565.471,-36 565.471,-0 728.529,-0 728.529,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"647\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,B,C,B,C,B,C,B,C]</text>\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"851,-36 657,-36 657,0 851,0 851,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"754\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,a,B,C,B,C,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C] -->\n", - "<g id=\"edge10\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M647,-89.614C647,-77.2403 647,-60.3686 647,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"650.5,-46.0504 647,-36.0504 643.5,-46.0504 650.5,-46.0504\"/>\n", - "<text text-anchor=\"middle\" x=\"655.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,a,B,C,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M754,-86.8C754,-75.16 754,-59.55 754,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"757.5,-46.18 754,-36.18 750.5,-46.18 757.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"765\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,B,C,C,B,C] -->\n", - "<g id=\"node14\" class=\"node\"><title>[a,a,a,S,B,B,C,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"354.45,-36 215.55,-36 215.55,-0 354.45,-0 354.45,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"285\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,B,C,C,B,C]</text>\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>[a,a,a,S,B,B,C,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"413,-36 249,-36 249,0 413,0 413,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"331\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,B,C,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C] -->\n", - "<g id=\"edge12\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M577.631,-90.1368C516.733,-75.3329 428.176,-53.8051 364.449,-38.3135\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"364.986,-34.8422 354.442,-35.8809 363.332,-41.6441 364.986,-34.8422\"/>\n", - "<text text-anchor=\"middle\" x=\"507.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,B,C,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M671.94,-87.51C600.55,-73.16 497.18,-52.39 423,-37.49\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"423.69,-34.05 413.19,-35.52 422.31,-40.92 423.69,-34.05\"/>\n", + "<text text-anchor=\"middle\" x=\"579\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"node16\" class=\"node\"><title>[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"885.45,-36 746.55,-36 746.55,-0 885.45,-0 885.45,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"816\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,B,C,C]</text>\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1033,-36 869,-36 869,0 1033,0 1033,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"951\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,a,S,B,C,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"edge14\" class=\"edge\"><title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M679.986,-89.8238C706.856,-75.8322 744.964,-55.9889 774.011,-40.8643\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"775.844,-43.8558 783.097,-36.1329 772.611,-37.647 775.844,-43.8558\"/>\n", - "<text text-anchor=\"middle\" x=\"755.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>[a,a,a,S,B,C,B,C,B,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M793.87,-86.8C825.08,-73.33 868.63,-54.54 901.98,-40.15\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"903.73,-43.21 911.53,-36.03 900.96,-36.78 903.73,-43.21\"/>\n", + "<text text-anchor=\"middle\" x=\"876\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C] -->\n", - "<g id=\"node17\" class=\"node\"><title>[a,a,S,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"880.41,-126 777.59,-126 777.59,-90 880.41,-90 880.41,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,B,C,C]</text>\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>[a,a,S,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1027,-123 905,-123 905,-87 1027,-87 1027,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C] -->\n", - "<g id=\"edge16\" class=\"edge\"><title>[a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.131,-89.8238C877.848,-76.0745 908.492,-56.6744 932.217,-41.6541\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"934.361,-44.4392 940.938,-36.1329 930.617,-38.5248 934.361,-44.4392\"/>\n", - "<text text-anchor=\"middle\" x=\"919.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>[a,a,S,B,B,C,C]->[a,a,a,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M998.58,-86.8C1023.76,-73.51 1058.77,-55.02 1085.88,-40.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1087.53,-43.79 1094.74,-36.03 1084.27,-37.6 1087.53,-43.79\"/>\n", + "<text text-anchor=\"middle\" x=\"1068\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C] -->\n", - "<g id=\"edge18\" class=\"edge\"><title>[a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M826.432,-89.614C824.604,-77.2403 822.111,-60.3686 820.021,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"823.443,-45.4315 818.519,-36.0504 816.518,-46.4546 823.443,-45.4315\"/>\n", - "<text text-anchor=\"middle\" x=\"832.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>[a,a,S,B,B,C,C]->[a,a,a,S,B,C,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M962.96,-86.8C960.91,-75.16 958.16,-59.55 955.81,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"959.22,-45.41 954.03,-36.18 952.32,-46.63 959.22,-45.41\"/>\n", + "<text text-anchor=\"middle\" x=\"971\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C] -->\n", - "<g id=\"node20\" class=\"node\"><title>[a,a,S,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"880.41,-216 777.59,-216 777.59,-180 880.41,-180 880.41,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,C,B,C]</text>\n", + "<g id=\"node11\" class=\"node\">\n", + "<title>[a,a,S,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1027,-210 905,-210 905,-174 1027,-174 1027,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,S,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C] -->\n", - "<g id=\"edge20\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M856.131,-179.824C877.848,-166.075 908.492,-146.674 932.217,-131.654\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"934.361,-134.439 940.938,-126.133 930.617,-128.525 934.361,-134.439\"/>\n", - "<text text-anchor=\"middle\" x=\"919.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,a,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M998.58,-173.8C1023.76,-160.51 1058.77,-142.02 1085.88,-127.71\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1087.53,-130.79 1094.74,-123.03 1084.27,-124.6 1087.53,-130.79\"/>\n", + "<text text-anchor=\"middle\" x=\"1068\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C] -->\n", - "<g id=\"edge22\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M793.477,-179.824C764.414,-165.772 723.144,-145.817 691.814,-130.668\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"692.96,-127.335 682.434,-126.133 689.913,-133.637 692.96,-127.335\"/>\n", - "<text text-anchor=\"middle\" x=\"763.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,a,S,B,C,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M923.35,-173.9C889.5,-160.33 842.03,-141.29 805.96,-126.83\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"807.16,-123.54 796.58,-123.07 804.56,-130.04 807.16,-123.54\"/>\n", + "<text text-anchor=\"middle\" x=\"884\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,S,B,C,B,C]->[a,a,S,B,B,C,C] -->\n", - "<g id=\"edge24\" class=\"edge\"><title>[a,a,S,B,C,B,C]->[a,a,S,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M829,-179.614C829,-167.24 829,-150.369 829,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"832.5,-136.05 829,-126.05 825.5,-136.05 832.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"837.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>[a,a,S,B,C,B,C]->[a,a,S,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M966,-173.8C966,-162.16 966,-146.55 966,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"969.5,-133.18 966,-123.18 962.5,-133.18 969.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"977\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,B,B,C,C] -->\n", - "<g id=\"node24\" class=\"node\"><title>[a,a,B,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"91.9491,-126 0.0508791,-126 0.0508791,-90 91.9491,-90 91.9491,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"46\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,B,C,C]</text>\n", + "<g id=\"node12\" class=\"node\">\n", + "<title>[a,a,B,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"108,-123 0,-123 0,-87 108,-87 108,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"54\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,b,B,C,C] -->\n", - "<g id=\"node26\" class=\"node\"><title>[a,a,b,B,C,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"92.1953,-36 1.80466,-36 1.80466,-0 92.1953,-0 92.1953,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"47\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,B,C,C]</text>\n", + "<g id=\"node13\" class=\"node\">\n", + "<title>[a,a,b,B,C,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"108.5,-36 1.5,-36 1.5,0 108.5,0 108.5,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"55\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,B,C,C]</text>\n", "</g>\n", "<!-- [a,a,B,B,C,C]->[a,a,b,B,C,C] -->\n", - "<g id=\"edge26\" class=\"edge\"><title>[a,a,B,B,C,C]->[a,a,b,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M46.1976,-89.614C46.3382,-77.2403 46.5299,-60.3686 46.6907,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"50.1923,-46.0896 46.8062,-36.0504 43.1927,-46.01 50.1923,-46.0896\"/>\n", - "<text text-anchor=\"middle\" x=\"55.5526\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>[a,a,B,B,C,C]->[a,a,b,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.2,-86.8C54.34,-75.16 54.52,-59.55 54.68,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"58.18,-46.22 54.8,-36.18 51.18,-46.13 58.18,-46.22\"/>\n", + "<text text-anchor=\"middle\" x=\"66\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C] -->\n", - "<g id=\"node27\" class=\"node\"><title>[a,a,B,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"200.949,-216 109.051,-216 109.051,-180 200.949,-180 200.949,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,C,B,C]</text>\n", + "<g id=\"node14\" class=\"node\">\n", + "<title>[a,a,B,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"234,-210 126,-210 126,-174 234,-174 234,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"180\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,B,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C]->[a,a,B,B,C,C] -->\n", - "<g id=\"edge28\" class=\"edge\"><title>[a,a,B,C,B,C]->[a,a,B,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M133.725,-179.824C117.07,-166.377 93.72,-147.526 75.2974,-132.653\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.2008,-129.691 67.2214,-126.133 72.8036,-135.138 77.2008,-129.691\"/>\n", - "<text text-anchor=\"middle\" x=\"119.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>[a,a,B,C,B,C]->[a,a,B,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.5,-173.8C135.29,-160.84 108.76,-142.94 87.78,-128.79\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"89.71,-125.87 79.46,-123.18 85.79,-131.67 89.71,-125.87\"/>\n", + "<text text-anchor=\"middle\" x=\"136\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C] -->\n", - "<g id=\"node30\" class=\"node\"><title>[a,a,b,C,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"200.195,-126 109.805,-126 109.805,-90 200.195,-90 200.195,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,C,B,C]</text>\n", + "<g id=\"node15\" class=\"node\">\n", + "<title>[a,a,b,C,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"233.5,-123 126.5,-123 126.5,-87 233.5,-87 233.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"180\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,C,B,C]</text>\n", "</g>\n", "<!-- [a,a,B,C,B,C]->[a,a,b,C,B,C] -->\n", - "<g id=\"edge30\" class=\"edge\"><title>[a,a,B,C,B,C]->[a,a,b,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M155,-179.614C155,-167.24 155,-150.369 155,-136.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.5,-136.05 155,-126.05 151.5,-136.05 158.5,-136.05\"/>\n", - "<text text-anchor=\"middle\" x=\"163.553\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>[a,a,B,C,B,C]->[a,a,b,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M180,-173.8C180,-162.16 180,-146.55 180,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"183.5,-133.18 180,-123.18 176.5,-133.18 183.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"191\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C]->[a,a,b,B,C,C] -->\n", - "<g id=\"edge32\" class=\"edge\"><title>[a,a,b,C,B,C]->[a,a,b,B,C,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M133.92,-89.8238C117.418,-76.3774 94.2822,-57.5263 76.0286,-42.6529\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"77.9899,-39.7363 68.0267,-36.1329 73.5682,-45.163 77.9899,-39.7363\"/>\n", - "<text text-anchor=\"middle\" x=\"119.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>[a,a,b,C,B,C]->[a,a,b,B,C,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.7,-86.8C135.73,-73.9 109.56,-56.1 88.79,-41.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"90.5,-38.9 80.26,-36.18 86.56,-44.69 90.5,-38.9\"/>\n", + "<text text-anchor=\"middle\" x=\"136\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,a,b,c,B,C] -->\n", - "<g id=\"node33\" class=\"node\"><title>[a,a,b,c,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"197.353,-36 110.647,-36 110.647,-0 197.353,-0 197.353,-36\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-13.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,c,B,C]</text>\n", + "<g id=\"node16\" class=\"node\">\n", + "<title>[a,a,b,c,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"231,-36 127,-36 127,0 231,0 231,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"179\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,a,b,c,B,C]</text>\n", "</g>\n", "<!-- [a,a,b,C,B,C]->[a,a,b,c,B,C] -->\n", - "<g id=\"edge34\" class=\"edge\"><title>[a,a,b,C,B,C]->[a,a,b,c,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M154.802,-89.614C154.662,-77.2403 154.47,-60.3686 154.309,-46.2198\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"157.807,-46.01 154.194,-36.0504 150.808,-46.0896 157.807,-46.01\"/>\n", - "<text text-anchor=\"middle\" x=\"163.553\" y=\"-58.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>[a,a,b,C,B,C]->[a,a,b,c,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M179.8,-86.8C179.66,-75.16 179.48,-59.55 179.32,-46.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"182.82,-46.13 179.2,-36.18 175.82,-46.22 182.82,-46.13\"/>\n", + "<text text-anchor=\"middle\" x=\"191\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,B,C] -->\n", - "<g id=\"node34\" class=\"node\"><title>[a,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"962.406,-306 905.594,-306 905.594,-270 962.406,-270 962.406,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"934\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,B,C]</text>\n", + "<g id=\"node17\" class=\"node\">\n", + "<title>[a,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1140.5,-297 1075.5,-297 1075.5,-261 1140.5,-261 1140.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"1108\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,B,C]</text>\n", "</g>\n", "<!-- [a,b,C] -->\n", - "<g id=\"node36\" class=\"node\"><title>[a,b,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1035.15,-216 980.845,-216 980.845,-180 1035.15,-180 1035.15,-216\"/>\n", - "<text text-anchor=\"middle\" x=\"1008\" y=\"-193.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,C]</text>\n", + "<g id=\"node18\" class=\"node\">\n", + "<title>[a,b,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1264,-210 1200,-210 1200,-174 1264,-174 1264,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"1232\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,C]</text>\n", "</g>\n", "<!-- [a,B,C]->[a,b,C] -->\n", - "<g id=\"edge36\" class=\"edge\"><title>[a,B,C]->[a,b,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M948.62,-269.614C959.637,-256.512 974.895,-238.368 987.185,-223.753\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"989.905,-225.957 993.662,-216.05 984.547,-221.451 989.905,-225.957\"/>\n", - "<text text-anchor=\"middle\" x=\"986.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>[a,B,C]->[a,b,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1133.09,-260.8C1151.92,-247.9 1177.88,-230.1 1198.48,-215.98\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1200.67,-218.72 1206.94,-210.18 1196.72,-212.94 1200.67,-218.72\"/>\n", + "<text text-anchor=\"middle\" x=\"1189\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,b,c] -->\n", - "<g id=\"node41\" class=\"node\"><title>[a,b,c]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1104,-126 1050,-126 1050,-90 1104,-90 1104,-126\"/>\n", - "<text text-anchor=\"middle\" x=\"1077\" y=\"-103.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", + "<g id=\"node20\" class=\"node\">\n", + "<title>[a,b,c]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1281.5,-123 1220.5,-123 1220.5,-87 1281.5,-87 1281.5,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"1251\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,b,c]</text>\n", "</g>\n", "<!-- [a,b,C]->[a,b,c] -->\n", - "<g id=\"edge42\" class=\"edge\"><title>[a,b,C]->[a,b,c]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M1021.63,-179.614C1031.81,-166.634 1045.87,-148.704 1057.27,-134.16\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1060.21,-136.079 1063.63,-126.05 1054.71,-131.76 1060.21,-136.079\"/>\n", - "<text text-anchor=\"middle\" x=\"1057.55\" y=\"-148.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>[a,b,C]->[a,b,c]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1235.84,-173.8C1238.45,-162.16 1241.94,-146.55 1244.91,-133.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1248.39,-133.7 1247.16,-123.18 1241.56,-132.17 1248.39,-133.7\"/>\n", + "<text text-anchor=\"middle\" x=\"1254\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,B,C] -->\n", - "<g id=\"node37\" class=\"node\"><title>[a,S,B,C]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"863.37,-306 794.63,-306 794.63,-270 863.37,-270 863.37,-306\"/>\n", - "<text text-anchor=\"middle\" x=\"829\" y=\"-283.8\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,B,C]</text>\n", + "<g id=\"node19\" class=\"node\">\n", + "<title>[a,S,B,C]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1005.5,-297 926.5,-297 926.5,-261 1005.5,-261 1005.5,-297\"/>\n", + "<text text-anchor=\"middle\" x=\"966\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">[a,S,B,C]</text>\n", "</g>\n", "<!-- [a,S,B,C]->[a,a,S,B,C,B,C] -->\n", - "<g id=\"edge38\" class=\"edge\"><title>[a,S,B,C]->[a,a,S,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M829,-269.614C829,-257.24 829,-240.369 829,-226.22\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"832.5,-226.05 829,-216.05 825.5,-226.05 832.5,-226.05\"/>\n", - "<text text-anchor=\"middle\" x=\"837.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>[a,S,B,C]->[a,a,S,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M966,-260.8C966,-249.16 966,-233.55 966,-220.24\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"969.5,-220.18 966,-210.18 962.5,-220.18 969.5,-220.18\"/>\n", + "<text text-anchor=\"middle\" x=\"977\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [a,S,B,C]->[a,a,B,C,B,C] -->\n", - "<g id=\"edge40\" class=\"edge\"><title>[a,S,B,C]->[a,a,B,C,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M794.65,-282.515C685.626,-268.281 346.654,-224.023 211.481,-206.374\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"211.708,-202.874 201.339,-205.05 210.802,-209.816 211.708,-202.874\"/>\n", - "<text text-anchor=\"middle\" x=\"561.553\" y=\"-238.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>[a,S,B,C]->[a,a,B,C,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M926.48,-273.73C799.46,-259.99 400.78,-216.88 244.12,-199.93\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"244.47,-196.45 234.15,-198.86 243.72,-203.41 244.47,-196.45\"/>\n", + "<text text-anchor=\"middle\" x=\"632\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S] -->\n", - "<g id=\"node42\" class=\"node\"><title>[S]</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"916,-396 862,-396 862,-360 916,-360 916,-396\"/>\n", - "<text text-anchor=\"middle\" x=\"889\" y=\"-373.8\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", + "<g id=\"node21\" class=\"node\">\n", + "<title>[S]</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"1037,-384 983,-384 983,-348 1037,-348 1037,-384\"/>\n", + "<text text-anchor=\"middle\" x=\"1010\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">[S]</text>\n", "</g>\n", "<!-- [S]->[a,B,C] -->\n", - "<g id=\"edge44\" class=\"edge\"><title>[S]->[a,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M897.891,-359.614C904.404,-346.876 913.355,-329.372 920.715,-314.979\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"923.844,-316.547 925.281,-306.05 917.612,-313.36 923.844,-316.547\"/>\n", - "<text text-anchor=\"middle\" x=\"924.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>[S]->[a,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1029.83,-347.8C1044.44,-335.13 1064.5,-317.73 1080.63,-303.74\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"1082.94,-306.37 1088.2,-297.18 1078.35,-301.08 1082.94,-306.37\"/>\n", + "<text text-anchor=\"middle\" x=\"1076\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "<!-- [S]->[a,S,B,C] -->\n", - "<g id=\"edge46\" class=\"edge\"><title>[S]->[a,S,B,C]</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M877.146,-359.614C868.378,-346.755 856.299,-329.038 846.433,-314.568\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"849.15,-312.341 840.625,-306.05 843.367,-316.284 849.15,-312.341\"/>\n", - "<text text-anchor=\"middle\" x=\"873.553\" y=\"-328.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>[S]->[a,S,B,C]</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M1001.1,-347.8C994.89,-335.82 986.51,-319.62 979.49,-306.06\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"982.6,-304.45 974.89,-297.18 976.38,-307.67 982.6,-304.45\"/>\n", + "<text text-anchor=\"middle\" x=\"1002\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">abl</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -1236,7 +1297,7 @@ "<Dot visualization: expr_as_graph [SFSF={[S],[a,b,c],[a,b,C],[a,S,B,C],[a,B,C],[a,a,b,c,B,C],[a,a,b,C,B,C],[a,a,b,B,C,C],[a,a,B,C,B,C],[a,a,B,B,C,C],[a,a,S,B,C,B,C],[a,a,S,B,B,C,C],[a,a,a,S,B,C,B,B,C,C],[a,a,a,S,B,B,C,C,B,C],[a,a,a,S,B,C,B,C,B,C],[a,a,a,B,B,C,C,B,C],[a,a,a,b,C,B,C,B,C],[a,a,a,B,C,B,B,C,C],[a,a,a,B,C,B,C,B,C],[a,a,a,a,B,C,B,C,B,C,B,C],[a,a,a,a,S,B,C,B,C,B,C,B,C]}(\"abl\",SF<|abl|>SF)]>" ] }, - "execution_count": 39, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1247,7 +1308,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -1289,9 +1350,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{([a,B]\\mapsto [a,b]),([b,B]\\mapsto [b,b]),([b,C]\\mapsto [b,c]),([c,C]\\mapsto [c,c]),([S]\\mapsto [a,\\mathit{S},\\mathit{B},C]),([S]\\mapsto [a,\\mathit{B},C]),([C,B]\\mapsto [B,C])\\}$" + ], + "text/plain": [ + "{([a,B]↦[a,b]),([b,B]↦[b,b]),([b,C]↦[b,c]),([c,C]↦[c,c]),([S]↦[a,S,B,C]),([S]↦[a,B,C]),([C,B]↦[B,C])}" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "P" ] @@ -1306,7 +1381,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1318,7 +1393,7 @@ "TRUE" ] }, - "execution_count": 42, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1329,7 +1404,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1341,7 +1416,7 @@ "{([a,B]↦[a,b]),([b,B]↦[b,b]),([b,C]↦[b,c]),([c,C]↦[c,c]),([S]↦[a,S,B,C]),([S]↦[a,B,C]),([C,B]↦[B,C])}" ] }, - "execution_count": 41, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1359,7 +1434,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1371,7 +1446,7 @@ "FALSE" ] }, - "execution_count": 43, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1390,7 +1465,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1417,7 +1492,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1429,7 +1504,7 @@ "{([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 45, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1440,7 +1515,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1458,7 +1533,7 @@ "\tP1 = {([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 46, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1476,7 +1551,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1488,7 +1563,7 @@ "FALSE" ] }, - "execution_count": 47, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1499,7 +1574,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1521,7 +1596,7 @@ "\tP1 = {([S]↦[]),([S]↦[a,S,b])}" ] }, - "execution_count": 48, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1560,6 +1635,178 @@ "* $REG \\subseteq CF \\subseteq CS \\subseteq \\mathfrak{L}_0.$" ] }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: Chomsky" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE Chomsky\n", + "SETS ΣN = {a, b, c, S, A, B, C}\n", + "CONSTANTS Σ, N, P0, P1, P2, P3, P4, Grammatiken\n", + "PROPERTIES\n", + " Σ = {a, b, c} ∧\n", + " N = {S, A, B, C} ∧\n", + " Σ ∩ N = {} ∧\n", + " Σ ∪ N = ΣN ∧\n", + " //L0 = {x∈{a, b}^* | x enthält gleich viele as und bs}\n", + " //Ohne Sonderrregelung für lambda ist L0 von Typ 0.\n", + " P0 = {([S] ↦ [a, b]), ([S] ↦ [S, S]), ([S] ↦ []), ([a, b] ↦ [b, a]), ([b, a] ↦ [a, b])} ∧\n", + " //L1 = {a^mb^mc^m | m≥1}\n", + " P1 = {([S] ↦ [S, S]), ([S] ↦ [A, B, C]), ([B, A] ↦ [A, B]), ([C, A] ↦ [A, C]), ([C, B] ↦ [B, C]),\n", + " ([A] ↦ [a]), ([a, B] ↦ [a, b]), ([b, B] ↦ [b, b]), ([b, C] ↦ [b, c]), ([c, C] ↦ [c, c])} ∧\n", + " //L2 = {x∈{a, b}^+ | x enthält gleich viele as und bs}\n", + " P2 = {([S] ↦ [A, B]), ([S] ↦ [B, A]),\n", + " ([A] ↦ [A, A, B]), ([A] ↦ [A, B, A]), ([A] ↦ [B, A, A]), ([A] ↦ [a]),\n", + " ([B] ↦ [B, B, A]), ([B] ↦ [B, A, B]), ([B] ↦ [A, B, B]), ([B] ↦ [b])} ∧\n", + " //L3 = L4 = {a, b, c}\n", + " P3 = {([S] ↦ [a]), ([S] ↦ [b]), ([S] ↦ [c])} ∧\n", + " P4 = {([S] ↦ [A, A]), ([A, A] ↦ [a]), ([S] ↦ [b]), ([S] ↦ [c])} ∧\n", + " Grammatiken = [P0, P1, P2, P3, P4]\n", + " \n", + "DEFINITIONS\n", + " SET_PREF_PP_SEQUENCES == TRUE;\n", + " L0(R) == TRUE; //Jede Grammatik ist vom Typ 0\n", + " L1(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(p) ≤ size(q)) THEN L0(R) ELSE FALSE END;\n", + " L2(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(p)=1 & p∈seq(N)) THEN L1(R) ELSE FALSE END;\n", + " L3(R) == IF ∀(p,q).( p↦q ∈ R ⇒ size(q)>0 & size(q) ≤ 2 & first(q)∈Σ & (size(q)≤1 or first(tail(q))∈N)) THEN L2(R) ELSE FALSE END;\n", + " \n", + " \"LibraryStrings.def\";\n", + " ANIMATION_FUNCTION_DEFAULT == {(0,0,\"P\"), (1,0,\"P0\"), (2,0,\"P1\"), (3,0,\"P2\"), (4,0,\"P3\"), (5,0,\"P4\")};\n", + " ANIMATION_FUNCTION1 == {c,r,i| r=1 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L0(Grammatiken(c)))} ∪ {(0,1,\"L0(P)\")};\n", + " ANIMATION_FUNCTION2 == {c,r,i| r=2 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L1(Grammatiken(c)))} ∪ {(0,2,\"L1(P)\")};\n", + " ANIMATION_FUNCTION3 == {c,r,i| r=3 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L2(Grammatiken(c)))} ∪ {(0,3,\"L2(P)\")};\n", + " ANIMATION_FUNCTION4 == {c,r,i| r=4 ∧ c∈dom(Grammatiken) ∧ i=TO_STRING(L3(Grammatiken(c)))} ∪ {(0,4,\"L3(P)\")};\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 1: $initialise_machine()" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">P</td>\n", + "<td style=\"padding:10px\">L0(P)</td>\n", + "<td style=\"padding:10px\">L1(P)</td>\n", + "<td style=\"padding:10px\">L2(P)</td>\n", + "<td style=\"padding:10px\">L3(P)</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P0</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P1</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P2</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P3</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">P4</td>\n", + "<td style=\"padding:10px\">TRUE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "<td style=\"padding:10px\">FALSE</td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die obige Tabelle zeigt, in welche Sprachklasse die entsprechenden Grammatiken fallen. Dabei ist zu beachten, dass L3 = L4 ist, aber P3 und P4 unterschiedliche Typen haben. Die Sprache fällt allerdings immer in die größte Spracheklasse zu der es eine Grammatik gibt, die diese Sprache erzeugt. Also gilt $L4 ∈ \\mathfrak{L}_3 = REG$. Daher reicht die Angabe einer Grammatik nicht aus, um zu zeigen, dass eine Sprache höchstens in einer der Klassen liegt. Um dies zu zeigen, gibt es verschiedene Methoden, wie z.B. das Pumping-Lemma oder die Myhill-Nerode Relation." + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/info4/kapitel-10/Das Halteproblem.ipynb b/info4/kapitel-10/Das Halteproblem.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..60fbb3f3e86c0e67ef68aa593db917b280fba772 --- /dev/null +++ b/info4/kapitel-10/Das Halteproblem.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Das (spezielle) Halteproblem\n", + "\n", + "Im Skript wird das Halteproblem formal definiert. Hier wollen wir das Halteproblem einmal intuitiv betrachten.\n", + "\n", + "Intuitiv gesehen stellt man beim speziellen Halteproblem die Frage, ob eine Turingmaschiene hält, wenn Sie sich selbst als eine Eingabe erhält.\n", + "Um Turingmaschienen als Eingaben nutzen zu können benötigen wir eine Darstellung als Wörter über einem Alphabet. Als Alphabet wählen wir $\\Sigma$ = {0, 1} und als Möglichkeit eine TM über $\\Sigma$ darzustellen wählen wir die Gödelisierung. Die genau Definition finden Sie im Skript auf Seite 153 (zwischen Korrolar 10.18 und Beispiel 10.19). Für unsere Zwecke reicht es allerdings aus zu verstehen, dass mit der Gödelisierung jeder TM ein Wort aus $\\Sigma^*$ zugeordet wird. Auf Grund der Art der Gödelisierung gilt die Umkehrung allerdings nicht. Um die Umkehrabbildung angeben zu können sei $M_0$ eine beliebige feste TM. Dann ist für jedes Wort $w\\in\\Sigma^*$ eine TM $M_w$ definiert durch:\n", + "\n", + "$M_w$ = M, falls w = code(M)\n", + "\n", + "$M_w$ = $M_0$, sonst\n", + "\n", + "Mit dieser Definition lässt sich das spezielle Halteproblem definieren als:\n", + "$K=\\{w\\in\\{0,1\\}^* | \\text{$M_w$ angesetzt auf w hält nach endlich vielen Schritten}\\}$\n", + "\n", + "Nun zeigen wir, dass K nicht entscheidbar ist, es also keine TM gibt, die für jedes $x\\in\\Sigma^*$ entscheidet, ob es in K liegt oder nicht. Für einen Wiederspruchsbeweis nehmen wir an, dass K entscheidbar wäre.\n", + "\n", + "Sei H dann die TM, die für alle x entscheided, ob x in K liegt oder nicht.\n", + "Wenn also die TM M mit code(M)=x hält, dann gibt H bei der Eingabe x 1 und sonst 0 aus.\n", + "\n", + "Sei nun N eine TM, die bei der Eingabe 1 in eine Endlosschleife läuft und bei der Eingabe 0 eine 1 ausgibt.\n", + "\n", + "Betrachten wir nun die TM C, die aus der Hintereinanderschaltung von H und N entsteht.\n", + "Wenn wir C auf die Gödelisierung einer TM anwenden, die mit sich selbst als Eingabe hält, dann gibt H eine 1 aus und somit hält N nicht an. Damit hält auch C nicht.\n", + "Und wenn wir C auf die Gödelisierung einer TM anwenden, die in eine Endlosschleife läuft, wenn Sie sich selbst als Eingabe erhält, dann gibt H eine O aus und somit N eine 1 und C hält.\n", + "\n", + "Wenn wir nun C auf sich selbst anwenden, was geschieht dann?\n", + "Angenommen C hält, dann gibt H eine 1 aus und N läuft in eine Endlosschleife. Daher hält C nicht.\n", + "Wenn C allerdings in eine Endlosschleife läuft, dann gibt H eine 0 aus und somit N eine 1. Damit hält C.\n", + "Dies ist ein Wiederspruch dazu, dass K entscheidbar ist." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<table align=\"LEFT\">\n", + " <tr>\n", + " <td width=50%><center>Die Turingmaschiene $H$</center></td>\n", + " <td width=50%><center>Die Turingmaschiene $N$</center></td>\n", + " </tr>\n", + " <tr>\n", + " <td width=50% align=\"CENTER\"><img src=\"./img/TM H.svg\" width=100%></td>\n", + " <td width=50%><img src=\"./img/TM N.svg\" width=100%></td>\n", + " </tr>\n", + " <tr>\n", + " <td width=100% colspan=2><center>Die Turingmaschiene $C$</center></td>\n", + " </tr>\n", + " <tr>\n", + " <td width=100% colspan=2><img src=\"./img/TM C2.svg\" width=100%></td>\n", + " </tr>\n", + "</table>" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ProB 2", + "language": "prob", + "name": "prob2" + }, + "language_info": { + "codemirror_mode": "prob2_jupyter_repl", + "file_extension": ".prob", + "mimetype": "text/x-prob2-jupyter-repl", + "name": "prob" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-10/img/TM C.svg b/info4/kapitel-10/img/TM C.svg new file mode 100644 index 0000000000000000000000000000000000000000..c6eefeb43ea254c58e02a00d20d6ded2f7110b21 --- /dev/null +++ b/info4/kapitel-10/img/TM C.svg @@ -0,0 +1 @@ +<svg width="1174" height="282" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="59" y="219" width="1174" height="282"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-59 -219)"><rect x="261.5" y="235.5" width="271" height="249" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="none"/><path d="M0.0236198-1.99986 94.3379-0.885938 94.2907 3.11378-0.0236198 1.99986ZM92.3853-4.90928 104.314 1.23202 92.2436 7.08988Z" transform="matrix(1 0 0 -1 154 360.232)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="16" transform="translate(171.552 355)">code(M) für<tspan x="0" y="19">eine TM M</tspan></text><path d="M532.72 302.134 670.737 355.422 669.296 359.154 531.28 305.866ZM670.312 350.97 679.345 360.89 665.99 362.165Z"/><path d="M0.669392-1.88465 138.591 47.1025 137.252 50.8718-0.669392 1.88465ZM138.045 42.6639 147.345 52.3342 134.029 53.9718Z" transform="matrix(1 0 0 -1 532 411.334)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="15" transform="translate(547.106 264)">1, falls M bei <tspan x="0" y="17">Eingabe code(M) </tspan><tspan x="0" y="35">hält</tspan><tspan font-size="16" x="2.59369" y="157">0, sonst</tspan><tspan font-size="24" x="-269.068" y="12">Die TM H</tspan></text><path d="M948 448.5C948 428.894 958.521 413 971.5 413 984.479 413 995 428.894 995 448.5 995 468.106 984.479 484 971.5 484 958.521 484 948 468.106 948 448.5Z" stroke="#000000" stroke-width="4" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><rect x="678.5" y="249.5" width="277" height="231" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="#FFFFFF"/><path d="M955 311 1109.12 311 1109.12 315 955 315ZM1107.12 307 1119.12 313 1107.12 319Z"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="16" transform="translate(972.277 300)">1, falls die <tspan x="0" y="38">Eingabe 0 ist</tspan><tspan x="31.9123" y="142">Endlosschleife, </tspan><tspan x="31.9123" y="161">sonst</tspan><tspan font-size="24" x="-276.951" y="-11">Die TM N</tspan></text><path d="M956.183 485.364 955 472 966.401 479.072Z"/><rect x="161.5" y="220.5" width="958" height="280" stroke="#2F528F" stroke-width="1.33333" stroke-miterlimit="8" fill="none"/><path d="M60 358 151.027 358 151.027 362 60 362ZM149.027 354 161.027 360 149.027 366Z"/><path d="M1119 311 1210.03 311 1210.03 315 1119 315ZM1208.03 307 1220.03 313 1208.03 319Z"/></g></svg> \ No newline at end of file diff --git a/info4/kapitel-10/img/TM C2.svg b/info4/kapitel-10/img/TM C2.svg new file mode 100644 index 0000000000000000000000000000000000000000..00d1eef43bf588f7de9f46c9676114c1ed004478 --- /dev/null +++ b/info4/kapitel-10/img/TM C2.svg @@ -0,0 +1,134 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.2" width="310.89mm" height="74.88mm" viewBox="0 0 31089 7488" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve"> + <defs class="ClipPathGroup"> + <clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse"> + <rect x="0" y="0" width="31089" height="7488"/> + </clipPath> + <clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse"> + <rect x="31" y="7" width="31027" height="7474"/> + </clipPath> + </defs> + <defs> + <font id="EmbeddedFont_1" horiz-adv-x="2048"> + <font-face font-family="Calibri embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1879" descent="476"/> + <missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/> + <glyph unicode="ü" horiz-adv-x="953" d="M 174,442 L 174,1120 358,1120 358,449 C 358,343 379,264 420,211 461,158 523,131 606,131 705,131 784,163 842,226 899,289 928,376 928,485 L 928,1120 1112,1120 1112,0 928,0 928,172 C 883,104 832,54 773,21 714,-12 645,-29 567,-29 438,-29 341,11 274,91 207,171 174,288 174,442 Z M 729,1552 L 932,1552 932,1350 729,1350 729,1552 Z M 338,1552 L 541,1552 541,1350 338,1350 338,1552 Z"/> + <glyph unicode="ä" horiz-adv-x="980" d="M 702,563 C 553,563 450,546 393,512 336,478 307,420 307,338 307,273 329,221 372,183 415,144 473,125 547,125 649,125 731,161 793,234 854,306 885,402 885,522 L 885,563 702,563 Z M 1069,639 L 1069,0 885,0 885,170 C 843,102 791,52 728,20 665,-13 589,-29 498,-29 383,-29 292,3 225,68 157,132 123,218 123,326 123,452 165,547 250,611 334,675 460,707 627,707 L 885,707 885,725 C 885,810 857,875 802,922 746,968 668,991 567,991 503,991 441,983 380,968 319,953 261,930 205,899 L 205,1069 C 272,1095 338,1115 401,1128 464,1141 526,1147 586,1147 748,1147 869,1105 949,1021 1029,937 1069,810 1069,639 Z M 688,1552 L 891,1552 891,1350 688,1350 688,1552 Z M 297,1552 L 500,1552 500,1350 297,1350 297,1552 Z"/> + <glyph unicode="t" horiz-adv-x="715" d="M 375,1438 L 375,1120 754,1120 754,977 375,977 375,369 C 375,278 388,219 413,193 438,167 488,154 565,154 L 754,154 754,0 565,0 C 423,0 325,27 271,80 217,133 190,229 190,369 L 190,977 55,977 55,1120 190,1120 190,1438 375,1438 Z"/> + <glyph unicode="s" horiz-adv-x="874" d="M 907,1087 L 907,913 C 855,940 801,960 745,973 689,986 631,993 571,993 480,993 411,979 366,951 320,923 297,881 297,825 297,782 313,749 346,725 379,700 444,677 543,655 L 606,641 C 737,613 830,574 885,523 940,472 967,400 967,309 967,205 926,123 844,62 761,1 648,-29 504,-29 444,-29 382,-23 317,-12 252,0 183,18 111,41 L 111,231 C 179,196 246,169 312,152 378,134 443,125 508,125 595,125 661,140 708,170 755,199 778,241 778,295 778,345 761,383 728,410 694,437 620,462 506,487 L 442,502 C 328,526 246,563 195,613 144,662 119,730 119,817 119,922 156,1004 231,1061 306,1118 412,1147 549,1147 617,1147 681,1142 741,1132 801,1122 856,1107 907,1087 Z"/> + <glyph unicode="r" horiz-adv-x="663" d="M 842,948 C 821,960 799,969 775,975 750,980 723,983 694,983 590,983 510,949 455,882 399,814 371,717 371,590 L 371,0 186,0 186,1120 371,1120 371,946 C 410,1014 460,1065 522,1098 584,1131 659,1147 748,1147 761,1147 775,1146 790,1145 805,1143 822,1140 841,1137 L 842,948 Z"/> + <glyph unicode="o" horiz-adv-x="1033" d="M 627,991 C 528,991 450,953 393,876 336,799 307,693 307,559 307,425 336,320 393,243 450,166 528,127 627,127 725,127 803,166 860,243 917,320 946,426 946,559 946,692 917,797 860,875 803,952 725,991 627,991 Z M 627,1147 C 787,1147 913,1095 1004,991 1095,887 1141,743 1141,559 1141,376 1095,232 1004,128 913,23 787,-29 627,-29 466,-29 341,23 250,128 159,232 113,376 113,559 113,743 159,887 250,991 341,1095 466,1147 627,1147 Z"/> + <glyph unicode="n" horiz-adv-x="954" d="M 1124,676 L 1124,0 940,0 940,670 C 940,776 919,855 878,908 837,961 775,987 692,987 593,987 514,955 457,892 400,829 371,742 371,633 L 371,0 186,0 186,1120 371,1120 371,946 C 415,1013 467,1064 527,1097 586,1130 655,1147 733,1147 862,1147 959,1107 1025,1028 1091,948 1124,831 1124,676 Z"/> + <glyph unicode="l" horiz-adv-x="213" d="M 193,1556 L 377,1556 377,0 193,0 193,1556 Z"/> + <glyph unicode="i" horiz-adv-x="213" d="M 193,1120 L 377,1120 377,0 193,0 193,1120 Z M 193,1556 L 377,1556 377,1323 193,1323 193,1556 Z"/> + <glyph unicode="h" horiz-adv-x="954" d="M 1124,676 L 1124,0 940,0 940,670 C 940,776 919,855 878,908 837,961 775,987 692,987 593,987 514,955 457,892 400,829 371,742 371,633 L 371,0 186,0 186,1556 371,1556 371,946 C 415,1013 467,1064 527,1097 586,1130 655,1147 733,1147 862,1147 959,1107 1025,1028 1091,948 1124,831 1124,676 Z"/> + <glyph unicode="g" horiz-adv-x="1006" d="M 930,573 C 930,706 903,810 848,883 793,956 715,993 616,993 517,993 441,956 386,883 331,810 303,706 303,573 303,440 331,337 386,264 441,191 517,154 616,154 715,154 793,191 848,264 903,337 930,440 930,573 Z M 1114,139 C 1114,-52 1072,-193 987,-287 902,-379 773,-426 598,-426 533,-426 472,-421 415,-412 358,-402 302,-387 248,-367 L 248,-188 C 302,-217 355,-239 408,-253 461,-267 514,-274 569,-274 690,-274 780,-242 840,-180 900,-116 930,-21 930,106 L 930,197 C 892,131 843,82 784,49 725,16 654,0 571,0 434,0 323,52 239,157 155,262 113,400 113,573 113,746 155,885 239,990 323,1095 434,1147 571,1147 654,1147 725,1131 784,1098 843,1065 892,1016 930,950 L 930,1120 1114,1120 1114,139 Z"/> + <glyph unicode="f" horiz-adv-x="742" d="M 760,1556 L 760,1403 584,1403 C 518,1403 472,1390 447,1363 421,1336 408,1288 408,1219 L 408,1120 711,1120 711,977 408,977 408,0 223,0 223,977 47,977 47,1120 223,1120 223,1198 C 223,1323 252,1414 310,1471 368,1528 460,1556 586,1556 L 760,1556 Z"/> + <glyph unicode="e" horiz-adv-x="1059" d="M 1151,606 L 1151,516 305,516 C 313,389 351,293 420,227 488,160 583,127 705,127 776,127 844,136 911,153 977,170 1043,196 1108,231 L 1108,57 C 1042,29 974,8 905,-7 836,-22 765,-29 694,-29 515,-29 374,23 270,127 165,231 113,372 113,549 113,732 163,878 262,986 361,1093 494,1147 662,1147 813,1147 932,1099 1020,1002 1107,905 1151,773 1151,606 Z M 967,659 C 966,760 938,841 883,901 828,961 755,991 664,991 561,991 479,962 418,904 356,846 320,764 311,659 L 967,659 Z"/> + <glyph unicode="d" horiz-adv-x="1006" d="M 930,950 L 930,1556 1114,1556 1114,0 930,0 930,168 C 891,101 843,52 784,20 725,-13 654,-29 571,-29 436,-29 326,25 241,133 156,241 113,383 113,559 113,735 156,877 241,985 326,1093 436,1147 571,1147 654,1147 725,1131 784,1099 843,1066 891,1017 930,950 Z M 303,559 C 303,424 331,318 387,241 442,164 519,125 616,125 713,125 790,164 846,241 902,318 930,424 930,559 930,694 902,801 846,878 790,955 713,993 616,993 519,993 442,955 387,878 331,801 303,694 303,559 Z"/> + <glyph unicode="c" horiz-adv-x="900" d="M 999,1077 L 999,905 C 947,934 895,955 843,970 790,984 737,991 684,991 565,991 472,953 406,878 340,802 307,696 307,559 307,422 340,316 406,241 472,165 565,127 684,127 737,127 790,134 843,149 895,163 947,184 999,213 L 999,43 C 948,19 895,1 840,-11 785,-23 726,-29 664,-29 495,-29 361,24 262,130 163,236 113,379 113,559 113,742 163,885 264,990 364,1095 501,1147 676,1147 733,1147 788,1141 842,1130 896,1118 948,1100 999,1077 Z"/> + <glyph unicode="b" horiz-adv-x="1007" d="M 997,559 C 997,694 969,801 914,878 858,955 781,993 684,993 587,993 510,955 455,878 399,801 371,694 371,559 371,424 399,318 455,241 510,164 587,125 684,125 781,125 858,164 914,241 969,318 997,424 997,559 Z M 371,950 C 410,1017 459,1066 518,1099 577,1131 647,1147 729,1147 865,1147 976,1093 1061,985 1146,877 1188,735 1188,559 1188,383 1146,241 1061,133 976,25 865,-29 729,-29 647,-29 577,-13 518,20 459,52 410,101 371,168 L 371,0 186,0 186,1556 371,1556 371,950 Z"/> + <glyph unicode="a" horiz-adv-x="980" d="M 702,563 C 553,563 450,546 393,512 336,478 307,420 307,338 307,273 329,221 372,183 415,144 473,125 547,125 649,125 731,161 793,234 854,306 885,402 885,522 L 885,563 702,563 Z M 1069,639 L 1069,0 885,0 885,170 C 843,102 791,52 728,20 665,-13 589,-29 498,-29 383,-29 292,3 225,68 157,132 123,218 123,326 123,452 165,547 250,611 334,675 460,707 627,707 L 885,707 885,725 C 885,810 857,875 802,922 746,968 668,991 567,991 503,991 441,983 380,968 319,953 261,930 205,899 L 205,1069 C 272,1095 338,1115 401,1128 464,1141 526,1147 586,1147 748,1147 869,1105 949,1021 1029,937 1069,810 1069,639 Z"/> + <glyph unicode="T" horiz-adv-x="1297" d="M -6,1493 L 1257,1493 1257,1323 727,1323 727,0 524,0 524,1323 -6,1323 -6,1493 Z"/> + <glyph unicode="N" horiz-adv-x="1165" d="M 201,1493 L 473,1493 1135,244 1135,1493 1331,1493 1331,0 1059,0 397,1249 397,0 201,0 201,1493 Z"/> + <glyph unicode="M" horiz-adv-x="1377" d="M 201,1493 L 502,1493 883,477 1266,1493 1567,1493 1567,0 1370,0 1370,1311 985,287 782,287 397,1311 397,0 201,0 201,1493 Z"/> + <glyph unicode="H" horiz-adv-x="1165" d="M 201,1493 L 403,1493 403,881 1137,881 1137,1493 1339,1493 1339,0 1137,0 1137,711 403,711 403,0 201,0 201,1493 Z"/> + <glyph unicode="E" horiz-adv-x="980" d="M 201,1493 L 1145,1493 1145,1323 403,1323 403,881 1114,881 1114,711 403,711 403,170 1163,170 1163,0 201,0 201,1493 Z"/> + <glyph unicode="D" horiz-adv-x="1271" d="M 403,1327 L 403,166 647,166 C 853,166 1004,213 1100,306 1195,399 1243,547 1243,748 1243,948 1195,1095 1100,1188 1004,1281 853,1327 647,1327 L 403,1327 Z M 201,1493 L 616,1493 C 905,1493 1118,1433 1253,1313 1388,1192 1456,1004 1456,748 1456,491 1388,302 1252,181 1116,60 904,0 616,0 L 201,0 201,1493 Z"/> + <glyph unicode="1" horiz-adv-x="900" d="M 254,170 L 584,170 584,1309 225,1237 225,1421 582,1493 784,1493 784,170 1114,170 1114,0 254,0 254,170 Z"/> + <glyph unicode="0" horiz-adv-x="1033" d="M 651,1360 C 547,1360 469,1309 417,1207 364,1104 338,950 338,745 338,540 364,387 417,285 469,182 547,131 651,131 756,131 834,182 887,285 939,387 965,540 965,745 965,950 939,1104 887,1207 834,1309 756,1360 651,1360 Z M 651,1520 C 818,1520 946,1454 1035,1322 1123,1189 1167,997 1167,745 1167,494 1123,302 1035,170 946,37 818,-29 651,-29 484,-29 356,37 268,170 179,302 135,494 135,745 135,997 179,1189 268,1322 356,1454 484,1520 651,1520 Z"/> + <glyph unicode="," horiz-adv-x="319" d="M 240,254 L 451,254 451,82 287,-238 158,-238 240,82 240,254 Z"/> + <glyph unicode=")" horiz-adv-x="477" d="M 164,1554 L 324,1554 C 424,1397 499,1243 549,1092 598,941 623,792 623,643 623,494 598,343 549,192 499,41 424,-113 324,-270 L 164,-270 C 253,-117 319,35 363,186 406,337 428,489 428,643 428,797 406,949 363,1099 319,1249 253,1401 164,1554 Z"/> + <glyph unicode="(" horiz-adv-x="477" d="M 635,1554 C 546,1401 479,1249 436,1099 393,949 371,797 371,643 371,489 393,337 437,186 480,35 546,-117 635,-270 L 475,-270 C 375,-113 300,41 251,192 201,343 176,494 176,643 176,792 201,941 250,1092 299,1243 374,1397 475,1554 L 635,1554 Z"/> + <glyph unicode=" " horiz-adv-x="635"/> + </font> + </defs> + <defs class="TextShapeIndex"> + <g ooo:slide="id1" ooo:id-list="id3"/> + </defs> + <defs class="EmbeddedBulletChars"> + <g id="bullet-char-template-57356" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/> + </g> + <g id="bullet-char-template-57354" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/> + </g> + <g id="bullet-char-template-10146" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/> + </g> + <g id="bullet-char-template-10132" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/> + </g> + <g id="bullet-char-template-10007" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/> + </g> + <g id="bullet-char-template-10004" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/> + </g> + <g id="bullet-char-template-9679" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/> + </g> + <g id="bullet-char-template-8226" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/> + </g> + <g id="bullet-char-template-8211" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/> + </g> + <g id="bullet-char-template-61548" transform="scale(0.00048828125,-0.00048828125)"> + <path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/> + </g> + </defs> + <g> + <g id="id2" class="Master_Slide"> + <g id="bg-id2" class="Background"/> + <g id="bo-id2" class="BackgroundObjects"/> + </g> + </g> + <g class="SlideGroup"> + <g> + <g id="container-id1"> + <g id="id1" class="Slide" clip-path="url(#presentation_clip_path)"> + <g class="Page"> + <g class="Graphic"> + <g id="id3"> + <rect class="BoundingBox" stroke="none" fill="none" x="4700" y="1092" width="21693" height="5225"/> + <defs> + <clipPath id="clip_path_1" clipPathUnits="userSpaceOnUse"> + <path d="M 4728,1117 L 26143,1117 26143,6307 4728,6307 4728,1117 Z"/> + </clipPath> + </defs> + <g clip-path="url(#clip_path_1)"> + <path fill="none" stroke="rgb(0,0,0)" stroke-width="25" stroke-linejoin="miter" d="M 10949,6002 L 8448,6002 8448,1406 13451,1406 13451,6002 10949,6002 Z"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 6463,3745 L 8168,3725 8169,3799 8389,3686 8166,3577 8167,3651 6463,3671 6463,3745 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="6787" y="3612"><tspan fill="rgb(0,0,0)" stroke="none">code(M) für </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="6787" y="3962"><tspan fill="rgb(0,0,0)" stroke="none">eine TM M</tspan></tspan></tspan></text> + <path fill="rgb(0,0,0)" stroke="none" d="M 13455,2636 L 15968,3606 15995,3537 16162,3720 15915,3744 15942,3675 13428,2705 13455,2636 Z"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 13454,4686 L 15965,3794 15990,3864 16162,3686 15916,3655 15940,3725 13429,4617 13454,4686 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="277px" font-weight="400"><tspan class="TextPosition" x="13720" y="1932"><tspan fill="rgb(0,0,0)" stroke="none">1, falls M bei </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="277px" font-weight="400"><tspan class="TextPosition" x="13720" y="2246"><tspan fill="rgb(0,0,0)" stroke="none">Eingabe code(M) </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="277px" font-weight="400"><tspan class="TextPosition" x="13720" y="2578"><tspan fill="rgb(0,0,0)" stroke="none">hält </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="13768" y="4830"><tspan fill="rgb(0,0,0)" stroke="none">0, sonst </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="443px" font-weight="400"><tspan class="TextPosition" x="8753" y="2153"><tspan fill="rgb(0,0,0)" stroke="none">Die TM H</tspan></tspan></tspan></text> + <path fill="none" stroke="rgb(0,0,0)" stroke-width="74" stroke-linejoin="miter" d="M 21121,5338 C 21121,4976 21316,4682 21555,4682 21795,4682 21989,4976 21989,5338 21989,5700 21795,5993 21555,5993 21316,5993 21121,5700 21121,5338 Z"/> + <path fill="rgb(255,255,255)" stroke="none" d="M 18703,5928 L 16146,5928 16146,1664 21260,1664 21260,5928 18703,5928 Z"/> + <path fill="none" stroke="rgb(0,0,0)" stroke-width="25" stroke-linejoin="miter" d="M 18703,5928 L 16146,5928 16146,1664 21260,1664 21260,5928 18703,5928 Z"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 21251,2799 L 24059,2799 24059,2726 24280,2836 24059,2947 24059,2873 21251,2873 21251,2799 Z"/> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="21569" y="2596"><tspan fill="rgb(0,0,0)" stroke="none">1, falls die </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="21569" y="3298"><tspan fill="rgb(0,0,0)" stroke="none">Eingabe 0 ist </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="22159" y="5218"><tspan fill="rgb(0,0,0)" stroke="none">Endlosschleife, </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="295px" font-weight="400"><tspan class="TextPosition" x="22159" y="5568"><tspan fill="rgb(0,0,0)" stroke="none">sonst </tspan></tspan></tspan></text> + <text class="TextShape"><tspan class="TextParagraph" font-family="Calibri, sans-serif" font-size="443px" font-weight="400"><tspan class="TextPosition" x="16457" y="2393"><tspan fill="rgb(0,0,0)" stroke="none">Die TM N</tspan></tspan></tspan></text> + <path fill="rgb(0,0,0)" stroke="none" d="M 21272,6018 L 21251,5771 21461,5902 21272,6018 Z"/> + <path fill="none" stroke="rgb(47,82,143)" stroke-width="25" stroke-linejoin="miter" d="M 15444,6298 L 6602,6298 6602,1129 24287,1129 24287,6298 15444,6298 Z"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 4728,3667 L 6371,3667 6371,3593 6593,3704 6371,3815 6371,3741 4728,3741 4728,3667 Z"/> + <path fill="rgb(0,0,0)" stroke="none" d="M 24278,2799 L 25922,2799 25922,2726 26143,2836 25922,2947 25922,2873 24278,2873 24278,2799 Z"/> + </g> + </g> + </g> + </g> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/info4/kapitel-10/img/TM H.svg b/info4/kapitel-10/img/TM H.svg new file mode 100644 index 0000000000000000000000000000000000000000..b6857edeadf72276b3fed8427f9cc3971c0a87b1 --- /dev/null +++ b/info4/kapitel-10/img/TM H.svg @@ -0,0 +1 @@ +<svg width="853" height="234" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="162" y="141" width="853" height="234"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-162 -141)"><rect x="319.5" y="143.5" width="443" height="230" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="none"/><path d="M168 256 309.486 256 309.486 260 168 260ZM307.486 252 319.486 258 307.486 264Z"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="24" transform="translate(177.101 236)">code(M) für<tspan x="0" y="58">eine TM M</tspan></text><path d="M762 205 992.359 205 992.359 209 762 209ZM990.359 201 1002.36 207 990.359 213Z"/><path d="M762 304 992.359 304 992.359 308 762 308ZM990.359 300 1002.36 306 990.359 312Z"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="24" transform="translate(783.855 185)">1, falls M bei Eingabe<tspan x="0" y="58">code(M) hält</tspan><tspan x="6.10352e-05" y="101">0, sonst</tspan><tspan x="-443.153" y="-2">Die TM H</tspan></text></g></svg> \ No newline at end of file diff --git a/info4/kapitel-10/img/TM H2.svg b/info4/kapitel-10/img/TM H2.svg new file mode 100644 index 0000000000000000000000000000000000000000..9f9a681bb10e369021cfb2ebdb2c4c8a9d4ab3b3 --- /dev/null +++ b/info4/kapitel-10/img/TM H2.svg @@ -0,0 +1 @@ +<svg width="1160" height="282" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="59" y="219" width="1160" height="282"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-59 -219)"><rect x="261.5" y="235.5" width="271" height="249" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="none"/><path d="M0.0236198-1.99986 94.3379-0.885938 94.2907 3.11378-0.0236198 1.99986ZM92.3853-4.90928 104.314 1.23202 92.2436 7.08988Z" transform="matrix(1 0 0 -1 161 360.232)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="16" transform="translate(178.04 355)">code(M) für<tspan x="0" y="19">eine TM M</tspan></text><path d="M532.72 302.134 670.737 355.422 669.296 359.154 531.28 305.866ZM670.312 350.97 679.345 360.89 665.99 362.165Z"/><path d="M0.669392-1.88465 138.591 47.1025 137.252 50.8718-0.669392 1.88465ZM138.045 42.6639 147.345 52.3342 134.029 53.9718Z" transform="matrix(1 0 0 -1 532 411.334)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="15" transform="translate(549.699 270)">1, falls M bei <tspan x="0" y="17">Eingabe code(M) </tspan><tspan x="0" y="35">hält</tspan><tspan font-size="16" x="-0.000183105" y="151">0, sonst</tspan><tspan font-size="24" x="-271.662" y="6">Die TM H</tspan></text><path d="M948 448.5C948 428.894 958.521 413 971.5 413 984.479 413 995 428.894 995 448.5 995 468.106 984.479 484 971.5 484 958.521 484 948 468.106 948 448.5Z" stroke="#000000" stroke-width="4" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><rect x="678.5" y="249.5" width="277" height="231" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="#FFFFFF"/><path d="M955 311 1094.83 311 1094.83 315 955 315ZM1092.83 307 1104.83 313 1092.83 319Z"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="16" transform="translate(972.277 300)">1, falls die <tspan x="0" y="38">Eingabe 0 ist</tspan><tspan x="31.9123" y="142">Endlosschleife, </tspan><tspan x="31.9123" y="161">sonst</tspan><tspan font-size="24" x="-276.951" y="-11">Die TM N</tspan></text><path d="M956.183 485.364 955 472 966.401 479.072Z"/><rect x="161.5" y="220.5" width="944" height="280" stroke="#2F528F" stroke-width="1.33333" stroke-miterlimit="8" fill="none"/><path d="M60 358 151.027 358 151.027 362 60 362ZM149.027 354 161.027 360 149.027 366Z"/><path d="M1105 313 1196.03 313 1196.03 317 1105 317ZM1194.03 309 1206.03 315 1194.03 321Z"/></g></svg> \ No newline at end of file diff --git a/info4/kapitel-10/img/TM N.svg b/info4/kapitel-10/img/TM N.svg new file mode 100644 index 0000000000000000000000000000000000000000..6883d36ac620ce97a1bd5d28d5035e39ce531cd0 --- /dev/null +++ b/info4/kapitel-10/img/TM N.svg @@ -0,0 +1 @@ +<svg width="838" height="243" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" overflow="hidden"><defs><clipPath id="clip0"><rect x="162" y="141" width="838" height="243"/></clipPath></defs><g clip-path="url(#clip0)" transform="translate(-162 -141)"><path d="M750 342C750 322.67 766.789 307 787.5 307 808.211 307 825 322.67 825 342 825 361.33 808.211 377 787.5 377 766.789 377 750 361.33 750 342Z" stroke="#000000" stroke-width="4" stroke-miterlimit="8" fill="none" fill-rule="evenodd"/><rect x="319.5" y="143.5" width="443" height="230" stroke="#000000" stroke-width="1.33333" stroke-miterlimit="8" fill="#FFFFFF"/><path d="M0.0195984-1.9999 141.506-0.613381 141.467 3.38643-0.0195984 1.9999ZM139.546-4.63279 151.486 1.48451 139.428 7.36664Z" transform="matrix(1 0 0 -1 168 259.485)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="24" transform="translate(177.101 236)">0 oder 1</text><path d="M1.05382e-06-2 189.249-1.9999 189.249 2.0001-1.05382e-06 2ZM187.249-5.9999 199.249 0.000104987 187.249 6.0001Z" transform="matrix(1 0 0 -1 762 207)"/><text font-family="Calibri,Calibri_MSFontService,sans-serif" font-weight="400" font-size="24" transform="translate(783.855 185)">1, falls die <tspan x="0" y="58">Eingabe 0 ist</tspan><tspan x="50.6421" y="149">Endlosschleife, </tspan><tspan x="50.6421" y="178">sonst</tspan><tspan x="-443.153" y="-2">Die TM N</tspan></text><path d="M766.143 377.761 762 365 774.694 369.342Z"/></g></svg> \ No newline at end of file diff --git a/info4/kapitel-11/PCP.ipynb b/info4/kapitel-11/PCP.ipynb index 848d689913ad559f027581b011ece86eab95d4dd..35951dcc3b2658fa60fac8511a76d56dc30b9a58 100644 --- a/info4/kapitel-11/PCP.ipynb +++ b/info4/kapitel-11/PCP.ipynb @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -42,7 +42,7 @@ "Loaded machine: PostCorrespondence_MC" ] }, - "execution_count": 190, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 191, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -94,7 +94,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 191, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -105,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -114,7 +114,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 192, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 193, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -137,7 +137,7 @@ "[([1]↦[1,0]),([0,1]↦[1]),([0,1,0]↦[1,0,0])]" ] }, - "execution_count": 193, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -148,7 +148,7 @@ }, { "cell_type": "code", - "execution_count": 194, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -167,7 +167,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 194, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -178,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 195, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -192,7 +192,7 @@ "Schritt(1,[1],[1,0])" ] }, - "execution_count": 195, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -210,7 +210,7 @@ }, { "cell_type": "code", - "execution_count": 196, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -219,7 +219,7 @@ "Executed operation: Schritt(1,[1],[1,0])" ] }, - "execution_count": 196, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -230,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 197, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 197, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -264,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 198, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -276,7 +276,7 @@ "[1]" ] }, - "execution_count": 198, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -287,7 +287,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -299,7 +299,7 @@ "[1,0]" ] }, - "execution_count": 199, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -310,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 200, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -325,7 +325,7 @@ "Schritt(3,[0,1,0],[1,0,0])" ] }, - "execution_count": 200, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -343,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -352,7 +352,7 @@ "Executed operation: Schritt(2,[0,1],[1])" ] }, - "execution_count": 201, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -363,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 202, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -388,7 +388,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 202, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -399,7 +399,7 @@ }, { "cell_type": "code", - "execution_count": 203, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -408,7 +408,7 @@ "Executed operation: Lösung()" ] }, - "execution_count": 203, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -427,7 +427,7 @@ }, { "cell_type": "code", - "execution_count": 204, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -449,7 +449,7 @@ "4: Lösung() (current)" ] }, - "execution_count": 204, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -460,7 +460,7 @@ }, { "cell_type": "code", - "execution_count": 205, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -469,7 +469,7 @@ "Changed to state with index 2" ] }, - "execution_count": 205, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -480,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 206, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -503,7 +503,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 206, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -514,7 +514,7 @@ }, { "cell_type": "code", - "execution_count": 207, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -523,7 +523,7 @@ "Executed operation: Schritt(3,[0,1,0],[1,0,0])" ] }, - "execution_count": 207, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -534,7 +534,7 @@ }, { "cell_type": "code", - "execution_count": 208, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -563,7 +563,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 208, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -574,7 +574,7 @@ }, { "cell_type": "code", - "execution_count": 209, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -583,7 +583,7 @@ "Executed operation: Schritt(3,[0,1,0],[1,0,0])" ] }, - "execution_count": 209, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -594,7 +594,7 @@ }, { "cell_type": "code", - "execution_count": 210, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -629,7 +629,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 210, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -640,7 +640,7 @@ }, { "cell_type": "code", - "execution_count": 211, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -649,7 +649,7 @@ "Executed operation: Schritt(2,[0,1],[1])" ] }, - "execution_count": 211, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 212, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -697,7 +697,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 212, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -708,7 +708,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -717,7 +717,7 @@ "Executed operation: Lösung()" ] }, - "execution_count": 213, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -728,7 +728,7 @@ }, { "cell_type": "code", - "execution_count": 214, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -754,7 +754,7 @@ "6: Lösung() (current)" ] }, - "execution_count": 214, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -770,7 +770,7 @@ "Sie können das B Modell oben mit anderen Werten für K ausprobieren:\n", "- K = [ [0,1]↦[1], [0,1,0]↦[1,0,0], [1]↦[1,0] ] Problem von Folie 36 */\n", "- K = [ [1]↦[1,0,1], [1,0]↦[0,0], [0,1,1]↦[1,1] ] \n", - "- K = [ [0,0,1]↦[0], [0,1]↦[0,1,1], [0,1]↦[1,0,1], [1,0] ↦ [0,0,1] ], Problem von Folie 32; kleinse Lösung hat 66 Elemente\n", + "- K = [ [0,0,1]↦[0], [0,1]↦[0,1,1], [0,1]↦[1,0,1], [1,0] ↦ [0,0,1] ], Problem von Folie 32; kleinste Lösung hat 66 Elemente\n", "\n", "Hier erst einmal Illustration der Lösung von Folie 36.\n", "Folgende Maschine hat keinen vordefinierten Wert von K; man muss diesen der :constants Anweisung übergeben." @@ -778,7 +778,7 @@ }, { "cell_type": "code", - "execution_count": 215, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -787,7 +787,7 @@ "Loaded machine: PostCorrespondence_MC" ] }, - "execution_count": 215, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -830,7 +830,7 @@ }, { "cell_type": "code", - "execution_count": 216, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -839,7 +839,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 216, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -850,7 +850,7 @@ }, { "cell_type": "code", - "execution_count": 217, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -859,7 +859,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 217, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +870,7 @@ }, { "cell_type": "code", - "execution_count": 218, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -879,7 +879,7 @@ "Executed operation: Schritt(3,[1],[1,0])" ] }, - "execution_count": 218, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -890,7 +890,7 @@ }, { "cell_type": "code", - "execution_count": 219, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -913,7 +913,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 219, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -924,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 220, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -933,7 +933,7 @@ "Executed operation: Schritt(2,[0,1,0],[1,0,0])" ] }, - "execution_count": 220, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -944,7 +944,7 @@ }, { "cell_type": "code", - "execution_count": 221, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -973,7 +973,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 221, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -984,7 +984,7 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -993,7 +993,7 @@ "Executed operation: Schritt(2,[0,1,0],[1,0,0])" ] }, - "execution_count": 222, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1004,7 +1004,7 @@ }, { "cell_type": "code", - "execution_count": 223, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1039,7 +1039,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 223, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1050,7 +1050,7 @@ }, { "cell_type": "code", - "execution_count": 224, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1059,7 +1059,7 @@ "Executed operation: Schritt(1,[0,1],[1])" ] }, - "execution_count": 224, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1070,7 +1070,7 @@ }, { "cell_type": "code", - "execution_count": 225, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1107,7 +1107,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 225, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1125,7 +1125,7 @@ }, { "cell_type": "code", - "execution_count": 226, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1134,7 +1134,7 @@ "Changed to state with index -1" ] }, - "execution_count": 226, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1145,7 +1145,7 @@ }, { "cell_type": "code", - "execution_count": 227, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1154,7 +1154,7 @@ "Machine constants set up using operation 11: $setup_constants()" ] }, - "execution_count": 227, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1165,7 +1165,7 @@ }, { "cell_type": "code", - "execution_count": 228, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1174,7 +1174,7 @@ "Machine initialised using operation 12: $initialise_machine()" ] }, - "execution_count": 228, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1185,7 +1185,7 @@ }, { "cell_type": "code", - "execution_count": 229, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1200,7 +1200,7 @@ "Schritt(2,[0,1],[0,1,1])" ] }, - "execution_count": 229, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1211,7 +1211,7 @@ }, { "cell_type": "code", - "execution_count": 230, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1220,7 +1220,7 @@ "Executed operation: Schritt(2,[0,1],[0,1,1])" ] }, - "execution_count": 230, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1231,7 +1231,7 @@ }, { "cell_type": "code", - "execution_count": 231, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1240,7 +1240,7 @@ "Executed operation: Schritt(4,[1,0],[0,0,1])" ] }, - "execution_count": 231, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1251,7 +1251,7 @@ }, { "cell_type": "code", - "execution_count": 232, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1282,7 +1282,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 232, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1300,7 +1300,7 @@ }, { "cell_type": "code", - "execution_count": 233, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1309,7 +1309,7 @@ "Executed operation: Schritt(3,[0,1],[1,0,1])" ] }, - "execution_count": 233, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1320,7 +1320,7 @@ }, { "cell_type": "code", - "execution_count": 234, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1329,7 +1329,7 @@ "Executed operation: Schritt(4,[1,0],[0,0,1])" ] }, - "execution_count": 234, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1340,7 +1340,7 @@ }, { "cell_type": "code", - "execution_count": 235, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1349,7 +1349,7 @@ "Executed operation: Schritt(4,[1,0],[0,0,1])" ] }, - "execution_count": 235, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1360,7 +1360,7 @@ }, { "cell_type": "code", - "execution_count": 236, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1369,7 +1369,7 @@ "Executed operation: Schritt(2,[0,1],[0,1,1])" ] }, - "execution_count": 236, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1380,7 +1380,7 @@ }, { "cell_type": "code", - "execution_count": 237, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1435,7 +1435,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 237, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1526,15 +1526,15 @@ "## Kodierung des Halteproblems als MPCP Problem\n", "\n", "Folgende B Maschine kodiert das Halteproblem einer Turingmaschine als MPCP Problem.\n", - "Der erste Schritt zu einer Lösung wird in der Initialisierung kodiert; dort wir erzwungen, dass wir das erste Paar aus dem Skript $(\\#,\\# z_0 w)$ benutzen.\n", + "Der erste Schritt zu einer Lösung wird in der Initialisierung kodiert; dort wird erzwungen, dass wir das erste Paar aus dem Skript $(\\#,\\# z_0 w \\#)$ benutzen.\n", "Die Turing Maschine hat 3 Zustände: z0,z1,z2.\n", "z2 ist der Endzustand.\n", - "z0 akzeptiert a and wechselt bei einem b zu z1, z1 akzeptiert b's und geht zu z2 bei einem Blank. \n" + "z0 akzeptiert a and wechselt bei einem b zu z1, z1 akzeptiert b's und geht zu z2 bei einem Blank. " ] }, { "cell_type": "code", - "execution_count": 238, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1543,7 +1543,7 @@ "Loaded machine: PostCorrespondence_Turing_MC" ] }, - "execution_count": 238, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1593,7 +1593,7 @@ }, { "cell_type": "code", - "execution_count": 239, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -1602,7 +1602,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 239, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1613,7 +1613,7 @@ }, { "cell_type": "code", - "execution_count": 240, + "execution_count": 51, "metadata": {}, "outputs": [ { @@ -1622,7 +1622,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 240, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1633,7 +1633,7 @@ }, { "cell_type": "code", - "execution_count": 241, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -1662,7 +1662,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 241, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } @@ -1673,7 +1673,7 @@ }, { "cell_type": "code", - "execution_count": 242, + "execution_count": 53, "metadata": {}, "outputs": [ { @@ -1687,7 +1687,7 @@ "Schritt(4,[z0,a],[a,z0])" ] }, - "execution_count": 242, + "execution_count": 53, "metadata": {}, "output_type": "execute_result" } @@ -1698,7 +1698,7 @@ }, { "cell_type": "code", - "execution_count": 243, + "execution_count": 54, "metadata": {}, "outputs": [ { @@ -1707,7 +1707,7 @@ "Executed operation: Schritt(4,[z0,a],[a,z0])" ] }, - "execution_count": 243, + "execution_count": 54, "metadata": {}, "output_type": "execute_result" } @@ -1718,7 +1718,7 @@ }, { "cell_type": "code", - "execution_count": 244, + "execution_count": 55, "metadata": {}, "outputs": [ { @@ -1751,7 +1751,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 244, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1770,7 +1770,7 @@ }, { "cell_type": "code", - "execution_count": 245, + "execution_count": 56, "metadata": {}, "outputs": [ { @@ -1784,7 +1784,7 @@ "Schritt(2,[b],[b])" ] }, - "execution_count": 245, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -1795,7 +1795,7 @@ }, { "cell_type": "code", - "execution_count": 246, + "execution_count": 57, "metadata": {}, "outputs": [ { @@ -1804,7 +1804,7 @@ "Executed operation: Schritt(2,[b],[b])" ] }, - "execution_count": 246, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1815,7 +1815,7 @@ }, { "cell_type": "code", - "execution_count": 247, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -1829,7 +1829,7 @@ "Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 247, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } @@ -1840,7 +1840,7 @@ }, { "cell_type": "code", - "execution_count": 248, + "execution_count": 59, "metadata": {}, "outputs": [ { @@ -1849,7 +1849,7 @@ "Executed operation: Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 248, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1860,7 +1860,7 @@ }, { "cell_type": "code", - "execution_count": 249, + "execution_count": 60, "metadata": {}, "outputs": [ { @@ -1897,7 +1897,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 249, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } @@ -1908,7 +1908,7 @@ }, { "cell_type": "code", - "execution_count": 250, + "execution_count": 61, "metadata": {}, "outputs": [ { @@ -1922,7 +1922,7 @@ "Schritt(1,[a],[a])" ] }, - "execution_count": 250, + "execution_count": 61, "metadata": {}, "output_type": "execute_result" } @@ -1940,7 +1940,7 @@ }, { "cell_type": "code", - "execution_count": 251, + "execution_count": 62, "metadata": {}, "outputs": [ { @@ -1949,7 +1949,7 @@ "Executed operation: Schritt(1,[a],[a])" ] }, - "execution_count": 251, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } @@ -1960,7 +1960,7 @@ }, { "cell_type": "code", - "execution_count": 252, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -1999,7 +1999,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 252, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -2010,7 +2010,7 @@ }, { "cell_type": "code", - "execution_count": 253, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -2024,7 +2024,7 @@ "Schritt(5,[z0,b],[b,z1])" ] }, - "execution_count": 253, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -2035,7 +2035,7 @@ }, { "cell_type": "code", - "execution_count": 254, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -2044,7 +2044,7 @@ "Executed operation: Schritt(5,[z0,b],[b,z1])" ] }, - "execution_count": 254, + "execution_count": 65, "metadata": {}, "output_type": "execute_result" } @@ -2055,7 +2055,7 @@ }, { "cell_type": "code", - "execution_count": 255, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -2098,7 +2098,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 255, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -2116,7 +2116,7 @@ }, { "cell_type": "code", - "execution_count": 256, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -2125,7 +2125,7 @@ "Executed operation: Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 256, + "execution_count": 67, "metadata": {}, "output_type": "execute_result" } @@ -2136,7 +2136,7 @@ }, { "cell_type": "code", - "execution_count": 257, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -2145,7 +2145,7 @@ "Executed operation: Schritt(1,[a],[a])" ] }, - "execution_count": 257, + "execution_count": 68, "metadata": {}, "output_type": "execute_result" } @@ -2156,7 +2156,7 @@ }, { "cell_type": "code", - "execution_count": 258, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -2203,7 +2203,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 258, + "execution_count": 69, "metadata": {}, "output_type": "execute_result" } @@ -2214,7 +2214,7 @@ }, { "cell_type": "code", - "execution_count": 259, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -2223,7 +2223,7 @@ "Executed operation: Schritt(2,[b],[b])" ] }, - "execution_count": 259, + "execution_count": 70, "metadata": {}, "output_type": "execute_result" } @@ -2234,7 +2234,7 @@ }, { "cell_type": "code", - "execution_count": 260, + "execution_count": 71, "metadata": {}, "outputs": [ { @@ -2283,7 +2283,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 260, + "execution_count": 71, "metadata": {}, "output_type": "execute_result" } @@ -2294,7 +2294,7 @@ }, { "cell_type": "code", - "execution_count": 261, + "execution_count": 72, "metadata": {}, "outputs": [ { @@ -2308,7 +2308,7 @@ "Schritt(7,[z1,Hash],[z2,Hash])" ] }, - "execution_count": 261, + "execution_count": 72, "metadata": {}, "output_type": "execute_result" } @@ -2319,7 +2319,7 @@ }, { "cell_type": "code", - "execution_count": 262, + "execution_count": 73, "metadata": {}, "outputs": [ { @@ -2328,7 +2328,7 @@ "Executed operation: Schritt(7,[z1,Hash],[z2,Hash])" ] }, - "execution_count": 262, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -2339,7 +2339,7 @@ }, { "cell_type": "code", - "execution_count": 263, + "execution_count": 74, "metadata": {}, "outputs": [ { @@ -2392,7 +2392,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 263, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -2410,7 +2410,7 @@ }, { "cell_type": "code", - "execution_count": 264, + "execution_count": 75, "metadata": {}, "outputs": [ { @@ -2424,7 +2424,7 @@ "Schritt(1,[a],[a])" ] }, - "execution_count": 264, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -2435,7 +2435,7 @@ }, { "cell_type": "code", - "execution_count": 265, + "execution_count": 76, "metadata": {}, "outputs": [ { @@ -2444,7 +2444,7 @@ "Executed operation: Schritt(1,[a],[a])" ] }, - "execution_count": 265, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -2455,7 +2455,7 @@ }, { "cell_type": "code", - "execution_count": 266, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -2510,7 +2510,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 266, + "execution_count": 77, "metadata": {}, "output_type": "execute_result" } @@ -2521,7 +2521,7 @@ }, { "cell_type": "code", - "execution_count": 267, + "execution_count": 78, "metadata": {}, "outputs": [ { @@ -2536,7 +2536,7 @@ "Schritt(9,[b,z2],[z2])" ] }, - "execution_count": 267, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -2554,7 +2554,7 @@ }, { "cell_type": "code", - "execution_count": 268, + "execution_count": 79, "metadata": {}, "outputs": [ { @@ -2563,7 +2563,7 @@ "Executed operation: Schritt(9,[b,z2],[z2])" ] }, - "execution_count": 268, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -2574,7 +2574,7 @@ }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 80, "metadata": {}, "outputs": [ { @@ -2631,7 +2631,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 269, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -2642,7 +2642,7 @@ }, { "cell_type": "code", - "execution_count": 270, + "execution_count": 81, "metadata": {}, "outputs": [ { @@ -2656,7 +2656,7 @@ "Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 270, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } @@ -2667,7 +2667,7 @@ }, { "cell_type": "code", - "execution_count": 271, + "execution_count": 82, "metadata": {}, "outputs": [ { @@ -2676,7 +2676,7 @@ "Executed operation: Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 271, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } @@ -2687,7 +2687,7 @@ }, { "cell_type": "code", - "execution_count": 272, + "execution_count": 83, "metadata": {}, "outputs": [ { @@ -2746,7 +2746,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 272, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -2757,7 +2757,7 @@ }, { "cell_type": "code", - "execution_count": 273, + "execution_count": 84, "metadata": {}, "outputs": [ { @@ -2772,7 +2772,7 @@ "Schritt(8,[a,z2],[z2])" ] }, - "execution_count": 273, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -2790,7 +2790,7 @@ }, { "cell_type": "code", - "execution_count": 274, + "execution_count": 85, "metadata": {}, "outputs": [ { @@ -2799,7 +2799,7 @@ "Executed operation: Schritt(8,[a,z2],[z2])" ] }, - "execution_count": 274, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -2810,7 +2810,7 @@ }, { "cell_type": "code", - "execution_count": 275, + "execution_count": 86, "metadata": {}, "outputs": [ { @@ -2871,7 +2871,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 275, + "execution_count": 86, "metadata": {}, "output_type": "execute_result" } @@ -2882,7 +2882,7 @@ }, { "cell_type": "code", - "execution_count": 276, + "execution_count": 87, "metadata": {}, "outputs": [ { @@ -2891,7 +2891,7 @@ "Executed operation: Schritt(3,[Hash],[Hash])" ] }, - "execution_count": 276, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -2902,7 +2902,7 @@ }, { "cell_type": "code", - "execution_count": 277, + "execution_count": 88, "metadata": {}, "outputs": [ { @@ -2965,7 +2965,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 277, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -2976,7 +2976,7 @@ }, { "cell_type": "code", - "execution_count": 278, + "execution_count": 89, "metadata": {}, "outputs": [ { @@ -2990,7 +2990,7 @@ "Schritt(10,[z2,Hash,Hash],[Hash])" ] }, - "execution_count": 278, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -3008,7 +3008,7 @@ }, { "cell_type": "code", - "execution_count": 279, + "execution_count": 90, "metadata": {}, "outputs": [ { @@ -3017,7 +3017,7 @@ "Executed operation: Schritt(10,[z2,Hash,Hash],[Hash])" ] }, - "execution_count": 279, + "execution_count": 90, "metadata": {}, "output_type": "execute_result" } @@ -3028,7 +3028,7 @@ }, { "cell_type": "code", - "execution_count": 280, + "execution_count": 91, "metadata": {}, "outputs": [ { @@ -3093,7 +3093,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 280, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -3104,7 +3104,7 @@ }, { "cell_type": "code", - "execution_count": 281, + "execution_count": 92, "metadata": {}, "outputs": [ { @@ -3113,7 +3113,7 @@ "Executed operation: Lösung()" ] }, - "execution_count": 281, + "execution_count": 92, "metadata": {}, "output_type": "execute_result" } diff --git a/info4/kapitel-2/Abschlusseigenschaften.ipynb b/info4/kapitel-2/Abschlusseigenschaften.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..971401daafeae9593dc7b667acf3e2985416f5eb --- /dev/null +++ b/info4/kapitel-2/Abschlusseigenschaften.ipynb @@ -0,0 +1,1980 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Abschlusseigenschaften regulärer Sprachen\n", + "\n", + "Abschlusseigenschaften sind ein weiteres nützliches Werkzeug um verschiedene Sprachklassen zu charakterisieren.\n", + "Damit kann man untersuchen, ob eine Sprache zu einer Sprachklasse gehört oder nicht.\n", + "\n", + "Die regulären Sprachen sind abgeschlossen unter:\n", + "* Vereinigung A ∪ B\n", + "* Komplement A̅\n", + "* Schnitt A ∩ B\n", + "* Differenz A/B\n", + "* Konkatenation AB\n", + "* Iteration A*\n", + "* Spiegelung sp(A)\n", + "\n", + "In den Folien wird diese Aussage zwar aufgestellt, aber nicht bewiesen.\n", + "Hier schauen wir uns für einige Operationen Beweisideen an konkreten Beispielen an." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zuerst betrachten wir die Vereinigung.\n", + "\n", + "Zu jeder regulären Sprache kann man auch einen NFA angeben.\n", + "Wenn $M_1=(Σ, Z_1, δ_1, S_1, F_1)$ und $M_2=(Σ, Z_2, δ_2, S_2, F_2)$ zwei NFAs sind, dann lässt sich ein Vereinigungs-NFA $M=(Σ, Z_1 ∪ Z_2, δ_1∪δ_2, S_1∪S_2, F_1∪F_2)$ erstellen, so dass $L(M) = L(M_1) ∪ L(M_2)$. Man erhält M, indem man alle Mengen der Tupel von $M_1$ und $M_2$ paarweise vereinigt (analog zum Beweis des Satzes von Kleene Folie 52)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: NFA" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE NFA\n", + "SETS\n", + " Z = {z10,z11,z12,z13, z20,z21,z22}\n", + "CONSTANTS Σ, M, δ, S, F, \n", + " M1, Z1, δ1, S1, F1,\n", + " M2, Z2, δ2, S2, F2\n", + " \n", + "PROPERTIES\n", + " Σ = {0,1} ∧\n", + " Z1 ∩ Z2 = ∅\n", + " ∧\n", + " // Der Automat M1 von Folie 21 (L(M1)={u1v|u∈{0,1}* ∧ v∈{0,1}}):\n", + " M1=(Σ, Z1, δ1, S1, F1) ∧\n", + " Z1 ⊆ Z ∧\n", + " δ1 ∈ (Z1×Σ) → ℙ(Z1) ∧\n", + " S1 ⊆ Z1 ∧ F1 ⊆ Z1\n", + " ∧\n", + " Z1 = {z10,z11,z12,z13} ∧\n", + " S1 = {z10} ∧ F1 = {z12} ∧\n", + " δ1 = { (z10,0)↦{z10}, (z10,1)↦{z10,z11},\n", + " (z11,0)↦{z12}, (z11,1)↦{z12},\n", + " (z12,0)↦{z13}, (z12,1)↦{z13},\n", + " (z13,0)↦{z13}, (z13,1)↦{z13} }\n", + " \n", + " ∧\n", + " // Der Automat M2 von Folie 28 (L(M2)={u1|u∈{0,1}*}):\n", + " M2=(Σ, Z2, δ2, S2, F2) ∧\n", + " Z2 ⊆ Z ∧\n", + " δ2 ∈ (Z2×Σ) → ℙ(Z2) ∧\n", + " S2 ⊆ Z2 ∧ F2 ⊆ Z2\n", + " ∧\n", + " Z2 = {z20,z21,z22} ∧\n", + " S2 = {z20} ∧ F2 = {z21} ∧\n", + " δ2 = { (z20,0)↦{z20}, (z20,1)↦{z20,z21},\n", + " (z21,0)↦{z22}, (z21,1)↦{z22},\n", + " (z22,0)↦{z22}, (z22,1)↦{z22}}\n", + " \n", + " ∧\n", + " //Der Vereinigungsautomat M:\n", + " M=(Σ, Z, δ, S, F) ∧\n", + " Z= Z1 ∪ Z2 ∧\n", + " δ = δ1 ∪ δ2 ∧\n", + " S = S1 ∪ S2 ∧\n", + " F = F1 ∪ F2\n", + " \n", + " \n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes∈F); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes∈Z\\F); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"0\",edges:{x,y|y∈δ(x,0) ∧ y∉δ(x,1)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"1\",edges:{x,y|y∈δ(x,1) ∧ y∉δ(x,0)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"0, 1\",edges:{x,y|y∈δ(x,0) ∧ y∈δ(x,1)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\"}*S) // Kanten für Startknoten\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier sieht man auf der linken Seite $M_1$, auf der rechten $M_2$ und das gesamte Bild stellt den Vereinigungsautomaten $M$ dar." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"715pt\"\n", + " viewBox=\"0.00 0.00 540.00 714.80\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 724.24)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724.24 546.15,-724.24 546.15,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"74.9\" cy=\"-210\" rx=\"23.3\" ry=\"23.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"74.9\" cy=\"-210\" rx=\"27.29\" ry=\"27.29\"/>\n", + "<text text-anchor=\"middle\" x=\"74.9\" y=\"-206.9\" font-family=\"Times,serif\" font-size=\"12.00\">z12</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"74.9\" cy=\"-40\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"74.9\" y=\"-36.9\" font-family=\"Times,serif\" font-size=\"12.00\">z13</text>\n", + "</g>\n", + "<!-- 0->4 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>0->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M74.9,-182.38C74.9,-152.87 74.9,-105.26 74.9,-73.56\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"78.4,-73.46 74.9,-63.46 71.4,-73.46 78.4,-73.46\"/>\n", + "<text text-anchor=\"middle\" x=\"86.4\" y=\"-117.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"365.9\" cy=\"-386\" rx=\"23.3\" ry=\"23.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"365.9\" cy=\"-386\" rx=\"27.29\" ry=\"27.29\"/>\n", + "<text text-anchor=\"middle\" x=\"365.9\" y=\"-382.9\" font-family=\"Times,serif\" font-size=\"12.00\">z21</text>\n", + "</g>\n", + "<!-- 6 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"365.9\" cy=\"-210\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"365.9\" y=\"-206.9\" font-family=\"Times,serif\" font-size=\"12.00\">z22</text>\n", + "</g>\n", + "<!-- 1->6 -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M365.9,-358.57C365.9,-327.78 365.9,-276.87 365.9,-243.64\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"369.4,-243.51 365.9,-233.51 362.4,-243.51 369.4,-243.51\"/>\n", + "<text text-anchor=\"middle\" x=\"377.4\" y=\"-294.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"74.9\" cy=\"-556\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"74.9\" y=\"-552.9\" font-family=\"Times,serif\" font-size=\"12.00\">z10</text>\n", + "</g>\n", + "<!-- 2->2 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M94.92,-568.5C106.05,-570.83 116.3,-566.66 116.3,-556 116.3,-548.84 111.67,-544.6 105.26,-543.31\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"104.85,-539.81 94.92,-543.5 104.99,-546.81 104.85,-539.81\"/>\n", + "<text text-anchor=\"middle\" x=\"127.8\" y=\"-552.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"74.9\" cy=\"-386\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"74.9\" y=\"-382.9\" font-family=\"Times,serif\" font-size=\"12.00\">z11</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M74.9,-532.34C74.9,-503.33 74.9,-452.85 74.9,-419.68\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"78.4,-419.57 74.9,-409.57 71.4,-419.57 78.4,-419.57\"/>\n", + "<text text-anchor=\"middle\" x=\"78.9\" y=\"-471.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->0 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M74.9,-362.25C74.9,-333.12 74.9,-282.26 74.9,-247.64\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"78.4,-247.45 74.9,-237.45 71.4,-247.45 78.4,-247.45\"/>\n", + "<text text-anchor=\"middle\" x=\"86.4\" y=\"-294.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 4->4 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M94.06,-54.06C105.52,-57.19 116.3,-52.5 116.3,-40 116.3,-31.41 111.2,-26.51 104.29,-25.3\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"103.82,-21.82 94.06,-25.94 104.26,-28.81 103.82,-21.82\"/>\n", + "<text text-anchor=\"middle\" x=\"127.8\" y=\"-36.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 5 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"365.9\" cy=\"-556\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"365.9\" y=\"-552.9\" font-family=\"Times,serif\" font-size=\"12.00\">z20</text>\n", + "</g>\n", + "<!-- 5->1 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>5->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M365.9,-532.34C365.9,-504.46 365.9,-456.75 365.9,-423.64\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"369.4,-423.44 365.9,-413.44 362.4,-423.44 369.4,-423.44\"/>\n", + "<text text-anchor=\"middle\" x=\"369.9\" y=\"-471.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 5->5 -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>5->5</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M385.92,-568.5C397.05,-570.83 407.3,-566.66 407.3,-556 407.3,-548.84 402.67,-544.6 396.26,-543.31\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"395.85,-539.81 385.92,-543.5 395.99,-546.81 395.85,-539.81\"/>\n", + "<text text-anchor=\"middle\" x=\"418.8\" y=\"-552.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 6->6 -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>6->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M384.2,-225.19C395.97,-229.16 407.3,-224.09 407.3,-210 407.3,-200.09 401.7,-194.64 394.28,-193.66\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"393.74,-190.2 384.2,-194.81 394.53,-197.16 393.74,-190.2\"/>\n", + "<text text-anchor=\"middle\" x=\"418.8\" y=\"-206.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 7 -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>7</title>\n", + "</g>\n", + "<!-- 7->2 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>7->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M199.21,-671.74C173.6,-648.11 127.59,-605.63 99.3,-579.52\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"101.54,-576.83 91.82,-572.62 96.79,-581.97 101.54,-576.83\"/>\n", + "</g>\n", + "<!-- 7->5 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>7->5</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M237.25,-671.74C263.89,-647.98 311.89,-605.17 341.13,-579.1\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"343.71,-581.48 348.84,-572.21 339.05,-576.26 343.71,-581.48\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine weitere Eigenschaft, die man leicht zeigen kann ist, dass das Komplement einer Sprache $L$ regulär ist. Sei $M=(Σ, Z, δ, z_0, F)$ ein DFA mit $L(M)=L$. Dann gilt für $M_2=(Σ, Z, δ, z_0, Z/F)$, dass $L(M_2)= \\overline{L}$. Dies kann man auch mit folgender Machiene darstellen:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: DFA" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE DFA\n", + "SETS\n", + " Z = {z0,z1,z2,z3}\n", + "CONSTANTS Σ, M, δ, F, M2, z_start\n", + "PROPERTIES\n", + " Σ = {0,1}\n", + " ∧\n", + " M = (Σ, Z, δ, z_start, F) ∧\n", + " M2 = (Σ, Z, δ, z_start, Z\\F) ∧\n", + " δ ∈ (Z×Σ) → Z ∧\n", + " z_start ∈ Z ∧\n", + " F ⊆ Z\n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes∈Z\\F); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes∈F); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"0\",edges:{x,y|y=δ(x,0) ∧ y≠δ(x,1)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"1\",edges:{x,y|y=δ(x,1) ∧ y≠ δ(x,0)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"0, 1\",edges:{x,y|y=δ(x,0) ∧ y=δ(x,1)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\" ↦ z_start}) // Kante für den Startknoten\n", + "END" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Diese Maschiene hat die feste Zustandsmenge Z={z0,z1,z2,z3} und das Alphabet Σ = {0,1}, aber die restlichen Elemente werden der Anweisung ```:constants``` übergeben. Somit kann das Komplement eines beliebigen DFAs erzeugt werden." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants M=({0,1}, //Σ\n", + " {z0,z1,z2,z3}, //Z\n", + " {(z0,0)↦z1, (z0,1)↦z3,\n", + " (z1,0)↦z3, (z1,1)↦z2,\n", + " (z2,0)↦z2, (z2,1)↦z2,\n", + " (z3,0)↦z3, (z3,1)↦z3 }, //δ\n", + " z0, {z0, z2}) //z0, F" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hier sieht man $M_2$, der aus $M$ erzeugt wurde, indem man alle das Komplement der Endzustandsmenge als neue Endzustandsmenge wählt." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"716pt\"\n", + " viewBox=\"0.00 0.00 540.00 715.65\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 725.95)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-725.95 546.79,-725.95 546.79,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"180.73\" cy=\"-282\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"180.73\" cy=\"-282\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"180.73\" y=\"-278.9\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"353.73\" cy=\"-54\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"353.73\" cy=\"-54\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"353.73\" y=\"-50.9\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "</g>\n", + "<!-- 0->1 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M194.02,-263.64C224.34,-224.04 298.72,-126.87 334.24,-80.47\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"337.1,-82.49 340.4,-72.42 331.54,-78.23 337.1,-82.49\"/>\n", + "<text text-anchor=\"middle\" x=\"270.73\" y=\"-164.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"54.73\" cy=\"-54\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"54.73\" y=\"-50.9\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "</g>\n", + "<!-- 0->3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M170.21,-262.12C147.46,-221.31 93.72,-124.93 68.39,-79.5\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"71.36,-77.64 63.44,-70.61 65.25,-81.05 71.36,-77.64\"/>\n", + "<text text-anchor=\"middle\" x=\"121.73\" y=\"-164.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 1->1 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M367.83,-71.57C380.56,-80.12 394.2,-74.26 394.2,-54 394.2,-38.8 386.53,-31.71 377.32,-32.72\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"375.87,-29.53 367.83,-36.43 378.42,-36.05 375.87,-29.53\"/>\n", + "<text text-anchor=\"middle\" x=\"405.7\" y=\"-50.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"266.73\" cy=\"-500\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"266.73\" y=\"-496.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "</g>\n", + "<!-- 2->0 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M260.13,-482.41C245.62,-445.96 210.79,-358.5 192.47,-312.47\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"195.66,-311.04 188.71,-303.05 189.16,-313.63 195.66,-311.04\"/>\n", + "<text text-anchor=\"middle\" x=\"229.73\" y=\"-392.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->1 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M270.14,-481.59C283.26,-414.64 330.58,-173.14 347.59,-86.34\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"351.07,-86.8 349.56,-76.31 344.2,-85.45 351.07,-86.8\"/>\n", + "<text text-anchor=\"middle\" x=\"316.73\" y=\"-278.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M65.19,-69.69C77.24,-80.83 91.2,-75.6 91.2,-54 91.2,-37.46 83.02,-30.52 73.77,-33.17\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"71.97,-30.17 65.19,-38.31 75.56,-36.18 71.97,-30.17\"/>\n", + "<text text-anchor=\"middle\" x=\"102.7\" y=\"-50.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "</g>\n", + "<!-- 4->2 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M266.73,-659.8C266.73,-629.26 266.73,-565.3 266.73,-528.56\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"270.23,-528.53 266.73,-518.53 263.23,-528.53 270.23,-528.53\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Als nächstes befassen wir uns mit der Konkatenation zweier Sprachen. Um dies zu erreichen schaltet man 2 NFAs $M_1=(Σ, Z_1, δ_1, S_1, F_1)$ udnd $M_2=(Σ, Z_2, δ_2, S_2, F_2)$ hintereinander. Dies erreicht man, indem man jedes Mal, wenn ein Zustand in $F_1$ erreicht wird zusätzlich auch alle Zustände in $S_2$ erreicht werden." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: NFA" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE NFA\n", + "SETS\n", + " Z = {z10,z11, z12, z20,z21,z22}\n", + "CONSTANTS Σ, M, δ, S, F, \n", + " M1, Z1, δ1, S1, F1, \n", + " M2, Z2, δ2, S2, F2\n", + " \n", + "PROPERTIES\n", + " Σ = {0,1} ∧\n", + " Z1 ∩ Z2 = ∅\n", + " ∧\n", + " // Der Automat M1 (L(M1)={w| |w|=0 ∨ w=u0 mit u∈{0,1}*}):\n", + " M1=(Σ, Z1, δ1, S1, F1) ∧\n", + " Z1 ⊆ Z ∧ Z1 = {z10,z11,z12} ∧\n", + " δ1 ∈ (Z1×Σ) → ℙ(Z1) ∧\n", + " S1 ⊆ Z1 ∧ F1 ⊆ Z1\n", + " ∧\n", + " S1 = {z10} ∧ F1 = {z10, z12} ∧\n", + " δ1 = { (z10,0)↦{z12}, (z10,1)↦{z11},\n", + " (z11,0)↦{z12}, (z11,1)↦{z11},\n", + " (z12,0)↦{z12}, (z12,1)↦{z11}} ∧\n", + " \n", + " \n", + " // Der Automat M2 (L(M2)={1^n|n∈ℕ_0}):\n", + " M2 = (Σ, Z2, δ2, S2, F2) ∧\n", + " Z2 ⊆ Z ∧ Z2 = {z20,z21,z22} ∧\n", + " δ2 ∈ (Z2×Σ) → ℙ(Z2) ∧\n", + " S2 ⊆ Z2 ∧ F2 ⊆ Z2\n", + " ∧\n", + " S2 = {z20} ∧ F2 = {z21} ∧\n", + " δ2 = { (z20,0)↦{z22}, (z20,1)↦{z21},\n", + " (z21,0)↦{z22}, (z21,1)↦{z21},\n", + " (z22,0)↦{z22}, (z22,1)↦{z22}} ∧\n", + "\n", + " //Die Regeln von Folie 51:\n", + " M = (Σ, Z, δ, S, F) ∧\n", + " Z = Z1 ∪ Z2 ∧\n", + " S = S1 ∪ ran((S1∩F1)*S2) ∧\n", + " F = F2 ∪ ran((S2∩F2)*F1) ∧\n", + " δ = {x | x∈(Z*INTEGER)*POW(Z) ∧\n", + " ∃zustand,symbol,menge.(x=(zustand, symbol)↦menge ∧ (\n", + " (zustand∈Z1 ∧ menge = δ1(zustand,symbol) ∧ δ1(zustand,symbol)∩F1= ∅) ∨\n", + " (zustand∈Z1 ∧ menge = δ1(zustand,symbol) ∪ S2 ∧ δ1(zustand,symbol)∩F1 ≠ ∅) ∨\n", + " (zustand∈Z2 ∧ menge = δ2(zustand,symbol))))}\n", + " \n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes∈F); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes∈Z\\F); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"0\",edges:{x,y|y∈δ(x,0) ∧ y∉δ(x,1)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"1\",edges:{x,y|y∈δ(x,1) ∧ y∉δ(x,0)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"0, 1\",edges:{x,y|y∈δ(x,0) ∧ y∈δ(x,1)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\"}*S) // Kanten für Startknoten\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<table align=\"LEFT\">\n", + " <tr>\n", + " <td width=50%>Der Automat $M_1$</td>\n", + " <td width=50%>Der Automat $M_2$</td>\n", + " </tr>\n", + " <tr>\n", + " <td width=50%><img src=\"./img/konkatenation_M1.svg\" width=100%></td>\n", + " <td width=50%><img src=\"./img/konkatenation_M2.svg\" width=100%></td>\n", + " </tr>\n", + "</table>" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"714pt\"\n", + " viewBox=\"0.00 0.00 540.00 714.39\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 724.84)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724.84 546.92,-724.84 546.92,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"139.12\" cy=\"-146\" rx=\"23.3\" ry=\"23.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"139.12\" cy=\"-146\" rx=\"27.29\" ry=\"27.29\"/>\n", + "<text text-anchor=\"middle\" x=\"139.12\" y=\"-142.9\" font-family=\"Times,serif\" font-size=\"12.00\">z21</text>\n", + "</g>\n", + "<!-- 0->0 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M164.32,-157.12C175.2,-158.03 184.51,-154.32 184.51,-146 184.51,-140.54 180.5,-137.07 174.67,-135.58\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"174.54,-132.07 164.32,-134.88 174.06,-139.05 174.54,-132.07\"/>\n", + "<text text-anchor=\"middle\" x=\"188.51\" y=\"-142.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 5 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"303.12\" cy=\"-28\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"303.12\" y=\"-24.9\" font-family=\"Times,serif\" font-size=\"12.00\">z22</text>\n", + "</g>\n", + "<!-- 0->5 -->\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>0->5</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M161.23,-129.36C190.96,-108.33 243.78,-70.97 275.91,-48.24\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"278.25,-50.88 284.39,-42.25 274.2,-45.16 278.25,-50.88\"/>\n", + "<text text-anchor=\"middle\" x=\"235.12\" y=\"-81.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"147.12\" cy=\"-606\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"147.12\" y=\"-602.9\" font-family=\"Times,serif\" font-size=\"12.00\">z10</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"251.12\" cy=\"-493\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"251.12\" y=\"-489.9\" font-family=\"Times,serif\" font-size=\"12.00\">z11</text>\n", + "</g>\n", + "<!-- 1->2 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M162.91,-588.14C180.42,-569.45 208.81,-539.16 228.63,-518\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"231.23,-520.34 235.51,-510.65 226.12,-515.56 231.23,-520.34\"/>\n", + "<text text-anchor=\"middle\" x=\"210.12\" y=\"-545.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"87.12\" cy=\"-379\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"87.12\" y=\"-375.9\" font-family=\"Times,serif\" font-size=\"12.00\">z12</text>\n", + "</g>\n", + "<!-- 1->3 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M141.25,-583.02C130.56,-542.92 107.86,-457.8 95.53,-411.54\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"98.87,-410.5 92.91,-401.74 92.11,-412.31 98.87,-410.5\"/>\n", + "<text text-anchor=\"middle\" x=\"127.12\" y=\"-489.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"303.12\" cy=\"-265\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"303.12\" y=\"-261.9\" font-family=\"Times,serif\" font-size=\"12.00\">z20</text>\n", + "</g>\n", + "<!-- 1->4 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M131.15,-588.47C92.45,-546.38 0.76,-433.04 55.12,-355.61 104.29,-285.56 213.9,-270.03 269.45,-266.75\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"269.68,-270.25 279.49,-266.26 269.33,-263.25 269.68,-270.25\"/>\n", + "<text text-anchor=\"middle\" x=\"47.12\" y=\"-432.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->2 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M272.41,-503.19C283.03,-504.6 292.51,-501.2 292.51,-493 292.51,-487.62 288.43,-484.3 282.62,-483.06\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"282.5,-479.56 272.41,-482.81 282.32,-486.55 282.5,-479.56\"/>\n", + "<text text-anchor=\"middle\" x=\"296.51\" y=\"-489.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M231.98,-478.93C202.97,-459.12 147.73,-421.4 114.48,-398.69\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"116.36,-395.73 106.13,-392.98 112.41,-401.51 116.36,-395.73\"/>\n", + "<text text-anchor=\"middle\" x=\"178.12\" y=\"-432.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->4 -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M256.2,-469.92C265.44,-429.75 285.03,-344.59 295.75,-298.03\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"299.18,-298.7 298.01,-288.17 292.36,-297.13 299.18,-298.7\"/>\n", + "<text text-anchor=\"middle\" x=\"287.12\" y=\"-375.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->2 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M109.85,-385.92C134.63,-393.2 174.57,-407.36 203.12,-429.5 215.18,-438.85 225.84,-451.92 234.04,-463.7\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"231.35,-465.98 239.8,-472.36 237.18,-462.1 231.35,-465.98\"/>\n", + "<text text-anchor=\"middle\" x=\"220.12\" y=\"-432.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M108.41,-389.19C119.03,-390.6 128.51,-387.2 128.51,-379 128.51,-373.62 124.43,-370.3 118.62,-369.06\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"118.5,-365.56 108.41,-368.81 118.32,-372.55 118.5,-365.56\"/>\n", + "<text text-anchor=\"middle\" x=\"132.51\" y=\"-375.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->4 -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>3->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M107.83,-367.26C146.29,-347.32 228.88,-304.49 273.33,-281.44\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"275.2,-284.42 282.47,-276.71 271.98,-278.2 275.2,-284.42\"/>\n", + "<text text-anchor=\"middle\" x=\"206.12\" y=\"-318.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 4->0 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M284.3,-250.58C256.27,-230.58 203.23,-192.74 169.6,-168.75\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"171.26,-165.63 161.09,-162.67 167.2,-171.33 171.26,-165.63\"/>\n", + "<text text-anchor=\"middle\" x=\"235.12\" y=\"-204.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 4->5 -->\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>4->5</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M303.12,-241.47C303.12,-199.71 303.12,-110.15 303.12,-61.71\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"306.62,-61.46 303.12,-51.46 299.62,-61.46 306.62,-61.46\"/>\n", + "<text text-anchor=\"middle\" x=\"307.12\" y=\"-142.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 5->5 -->\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>5->5</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M324.41,-38.19C335.03,-39.6 344.51,-36.2 344.51,-28 344.51,-22.62 340.43,-19.3 334.62,-18.06\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"334.5,-14.56 324.41,-17.81 334.32,-21.55 334.5,-14.56\"/>\n", + "<text text-anchor=\"middle\" x=\"356.01\" y=\"-24.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 6 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "</g>\n", + "<!-- 6->1 -->\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>6->1</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M364.96,-687.91C319.25,-670.94 227.18,-636.74 178.67,-618.72\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"179.61,-615.33 169.01,-615.13 177.17,-621.9 179.61,-615.33\"/>\n", + "</g>\n", + "<!-- 6->4 -->\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>6->4</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M419.24,-693.7C461.46,-685.3 538.12,-662.4 538.12,-607 538.12,-607 538.12,-607 538.12,-378 538.12,-289.81 401.57,-270.99 336.65,-267.03\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"336.68,-263.52 326.51,-266.49 336.31,-270.51 336.68,-263.52\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Um zu zeigen, dass die Iteration einer regulären Sprache wieder regulär ist, bilden wir zu einem NFA $M=(Σ, Z_1, δ_1, S_1, F_1)$ einen Rückkopplungsautomaten $M_2$. Wir starten damit den $M$ mit sich selbst zu verketten (analog zur Konkatenation). Dann müssen wir nur noch sichergehen, dass das leere Wort akzeptiert wird. Dafür fügen wir (falls notwendig) einen Zustand ein, der sowohl Start- als auch Endzustand ist." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: NFA" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE NFA\n", + "SETS\n", + " Z = {z10,z11, z12, z}\n", + "CONSTANTS Σ, M, δ, \n", + " M1, Z1, δ1, S1, F1,\n", + " M2, Z2, δ2, S2, F2\n", + " \n", + "PROPERTIES\n", + " Σ = {0,1}\n", + " ∧\n", + " // Der Automat M1 (L(M1)={w| w=u0 mit u∈{0,1}*}):\n", + " M1 = (Σ, Z1, δ1, S1, F1) ∧\n", + " Z1 ⊆ Z ∧ Z1 = {z10,z11,z12} ∧\n", + " δ1 ∈ (Z1×Σ) → ℙ(Z1) ∧\n", + " S1 ⊆ Z1 ∧ F1 ⊆ Z1\n", + " ∧\n", + " S1 = {z10} ∧ F1 = {z12} ∧\n", + " δ1 = { (z10,0)↦{z12}, (z10,1)↦{z11},\n", + " (z11,0)↦{z12}, (z11,1)↦{z11},\n", + " (z12,0)↦{z12}, (z12,1)↦{z11}} ∧\n", + " \n", + " //Die Regeln von Folie 53\n", + " M2 = (Σ, Z2, δ2, S2, F2) ∧\n", + " Z2 ⊆ Z ∧\n", + " δ2 ∈ (Z2×Σ) +-> ℙ(Z2) ∧\n", + " S2 ⊆ Z2 ∧ F2 ⊆ Z2\n", + " ∧\n", + " Z2 = IF S1∩F1 ≠ ∅ THEN Z1 ELSE Z1∪{z} END ∧\n", + " δ2 = δ1 ∧\n", + " S2 = IF S1∩F1 ≠ ∅ THEN S1 ELSE S1∪{z} END ∧\n", + " F2 = IF S1∩F1 ≠ ∅ THEN F1 ELSE F1∪{z} END ∧\n", + " \n", + " \n", + " //Die Regeln von Folie 54:\n", + " M = (Σ, Z2, δ, S2, F2) ∧\n", + " δ = {x | x∈(Z*INTEGER)*POW(Z) ∧\n", + " ∃zustand,symbol,menge.(x=(zustand, symbol)↦menge ∧ (\n", + " (zustand∈Z2 ∧ menge = δ2(zustand,symbol) ∧ δ2(zustand,symbol)∩F2= ∅) ∨\n", + " (zustand∈Z2 ∧ menge = δ2(zustand,symbol) ∪ S2 ∧ δ2(zustand,symbol)∩F2 ≠ ∅)))}\n", + " \n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes∈F2); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes∈Z2\\F2); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"0\",edges:{x,y|{(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∉δ(x,1)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"1\",edges:{x,y|{(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,1) ∧ y∉δ(x,0)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"0, 1\",edges:{x,y|{(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∈δ(x,1)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\"}*S2) // Kanten für Startknoten\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"716pt\"\n", + " viewBox=\"0.00 0.00 540.00 716.39\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 724.75)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724.75 545.32,-724.75 545.32,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"92.12\" cy=\"-663\" rx=\"23.3\" ry=\"23.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"92.12\" cy=\"-663\" rx=\"27.29\" ry=\"27.29\"/>\n", + "<text text-anchor=\"middle\" x=\"92.12\" y=\"-659.9\" font-family=\"Times,serif\" font-size=\"12.00\">z12</text>\n", + "</g>\n", + "<!-- 0->0 -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M112.19,-681.99C125.09,-686.95 137.51,-680.62 137.51,-663 137.51,-650.06 130.81,-643.21 122.14,-642.45\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"121.52,-639 112.19,-644.01 122.61,-645.92 121.52,-639\"/>\n", + "<text text-anchor=\"middle\" x=\"141.51\" y=\"-659.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"293.12\" cy=\"-47\" rx=\"18\" ry=\"18\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"293.12\" cy=\"-47\" rx=\"22\" ry=\"22\"/>\n", + "<text text-anchor=\"middle\" x=\"293.12\" y=\"-43.9\" font-family=\"Times,serif\" font-size=\"12.00\">z</text>\n", + "</g>\n", + "<!-- 0->1 -->\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>0->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M82.3,-637.15C56.37,-567.27 -7.13,-364.91 66.12,-223.61 109.52,-139.87 212.86,-83.95 263.76,-60.5\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"265.24,-63.67 272.92,-56.37 262.36,-57.29 265.24,-63.67\"/>\n", + "<text text-anchor=\"middle\" x=\"38.12\" y=\"-345.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"283.12\" cy=\"-451\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"283.12\" y=\"-447.9\" font-family=\"Times,serif\" font-size=\"12.00\">z10</text>\n", + "</g>\n", + "<!-- 0->2 -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M113.08,-645.23C136.91,-625.68 176.35,-591.77 206.12,-558.5 228.45,-533.54 250.48,-502.19 265.22,-479.99\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"268.32,-481.65 270.88,-471.37 262.47,-477.81 268.32,-481.65\"/>\n", + "<text text-anchor=\"middle\" x=\"220.12\" y=\"-548.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"98.12\" cy=\"-247\" rx=\"23.29\" ry=\"23.29\"/>\n", + "<text text-anchor=\"middle\" x=\"98.12\" y=\"-243.9\" font-family=\"Times,serif\" font-size=\"12.00\">z11</text>\n", + "</g>\n", + "<!-- 0->3 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M85.11,-636.4C74.18,-593.37 55.02,-503.79 62.12,-427.61 65.69,-389.29 70.58,-380.24 78.12,-342.5 82.28,-321.65 87.23,-298.26 91.16,-279.97\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"94.6,-280.63 93.29,-270.12 87.76,-279.16 94.6,-280.63\"/>\n", + "<text text-anchor=\"middle\" x=\"66.12\" y=\"-447.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 2->0 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M267.76,-468.89C234.78,-505.15 156.93,-590.74 116.87,-634.78\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"114.23,-632.49 110.09,-642.24 119.4,-637.2 114.23,-632.49\"/>\n", + "<text text-anchor=\"middle\" x=\"198.12\" y=\"-548.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->1 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M283.68,-427.53C285.36,-359.78 290.4,-157.41 292.34,-79.27\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"295.84,-79.18 292.59,-69.1 288.84,-79 295.84,-79.18\"/>\n", + "<text text-anchor=\"middle\" x=\"293.12\" y=\"-243.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->2 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M299.69,-467.53C312.05,-473.31 324.51,-467.8 324.51,-451 324.51,-438.8 317.93,-432.55 309.6,-432.26\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"308.69,-428.88 299.69,-434.47 310.21,-435.71 308.69,-428.88\"/>\n", + "<text text-anchor=\"middle\" x=\"328.51\" y=\"-447.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M267.66,-433.13C234.95,-397.4 158.59,-314.03 120.52,-272.46\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"122.99,-269.98 113.66,-264.97 117.83,-274.71 122.99,-269.98\"/>\n", + "<text text-anchor=\"middle\" x=\"201.12\" y=\"-345.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->0 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M97.79,-270.69C96.8,-338.78 93.86,-541.83 92.65,-625.42\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"89.15,-625.42 92.5,-635.47 96.15,-625.52 89.15,-625.42\"/>\n", + "<text text-anchor=\"middle\" x=\"100.12\" y=\"-447.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->1 -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M114.07,-229.8C148.7,-194.64 230.79,-111.29 270.64,-70.82\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"273.5,-72.91 278.02,-63.33 268.51,-68 273.5,-72.91\"/>\n", + "<text text-anchor=\"middle\" x=\"206.12\" y=\"-141.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->2 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M116.71,-261.41C139.87,-278.63 179.95,-310.18 209.12,-342.5 231.4,-367.19 252.46,-398.9 266.37,-421.47\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"263.51,-423.51 271.7,-430.24 269.49,-419.88 263.51,-423.51\"/>\n", + "<text text-anchor=\"middle\" x=\"223.12\" y=\"-345.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M114.69,-263.87C127.05,-269.75 139.51,-264.13 139.51,-247 139.51,-234.55 132.93,-228.18 124.6,-227.89\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"123.67,-224.51 114.69,-230.13 125.22,-231.33 123.67,-224.51\"/>\n", + "<text text-anchor=\"middle\" x=\"143.51\" y=\"-243.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "</g>\n", + "<!-- 4->1 -->\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M446.73,-644.94C425.02,-560.6 329.13,-187.93 300.94,-78.38\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"304.31,-77.43 298.42,-68.62 297.53,-79.18 304.31,-77.43\"/>\n", + "</g>\n", + "<!-- 4->2 -->\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M437.37,-644.81C407.85,-607.91 338.26,-520.93 303.55,-477.54\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"306.27,-475.34 297.29,-469.72 300.81,-479.71 306.27,-475.34\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im folgenden schauen wir uns die Differenz zweier Sprachen $L1-L2$ genauer an.\n", + "Das Vorgehen (aus dem Buch [Grundkurs Theoretische Informatik](https://link.springer.com/content/pdf/10.1007/978-3-8348-2202-4.pdf \"Vossen, G., & Witt, K. U. (2016). Grundkurs Theoretische Informatik. Springer Fachmedien Wiesbaden.\") von G. Vossen & K. U. Witt, Seite 99f.) ist hierbei, dass man zwei NFAs $M_1=(Σ, Z_1, δ_1, S_1, F_1)$ udnd $M_2=(Σ, Z_2, δ_2, S_2, F_2)$ parallel ausführt und die Endzustandsmenge so wählt, dass man in einem Zustand aus $F_1$, aber nicht gleichzeitig in einem aus $F_2$ landet." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: NFA" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE NFA\n", + "SETS\n", + " Z = {z10,z11, z12, z20,z21,z22}\n", + "CONSTANTS Σ, M, Z_gesamt, δ, S, F,\n", + " M1, Z1, δ1, S1, F1,\n", + " M2, Z2, δ2, S2, F2\n", + " \n", + "PROPERTIES\n", + " Σ = {0,1} ∧\n", + " Z1 ∩ Z2 = ∅ ∧\n", + " Z= Z1 ∪ Z2\n", + "\n", + " ∧\n", + " // Der Automat M1 (L(M1)={w| |w|=0 ∨ w=u0 mit u∈{0,1}*}):\n", + " M1 = (Σ, Z1, δ1, S1, F1) ∧\n", + " Z1 ⊆ Z ∧\n", + " δ1 ∈ (Z1×Σ) → ℙ(Z1) ∧\n", + " S1 ⊆ Z1 ∧ F1 ⊆ Z1\n", + " ∧\n", + " Z1 = {z10,z11,z12} ∧\n", + " S1 = {z10} ∧ F1 = {z10, z12} ∧\n", + " δ1 = { (z10,0)↦{z12}, (z10,1)↦{z11},\n", + " (z11,0)↦{z12}, (z11,1)↦{z11},\n", + " (z12,0)↦{z12}, (z12,1)↦{z11}} ∧\n", + " \n", + " // Der Automat M2 (L(M2)={0^n|n∈ℕ_0}):\n", + " M2 = (Σ, Z2, δ2, S2, F2) ∧\n", + " Z2 ⊆ Z ∧\n", + " δ2 ∈ (Z2×Σ) → ℙ(Z2) ∧\n", + " S2 ⊆ Z2 ∧ F2 ⊆ Z2\n", + " ∧\n", + " Z2 = {z20,z21,z22} ∧\n", + " S2 = {z20} ∧ F2 = {z20, z21} ∧\n", + " δ2 = { (z20,0)↦{z21}, (z20,1)↦{z22},\n", + " (z21,0)↦{z21}, (z21,1)↦{z22},\n", + " (z22,0)↦{z22}, (z22,1)↦{z22}} ∧\n", + "\n", + " //Der Automat nach \"Grundkurs Theoretische Informatik\"\n", + " M = (Σ, Z, δ, S, F) ∧\n", + " Z_gesamt = Z1*Z2 ∧\n", + " S = S1*S2 ∧\n", + " F = F1*(Z2\\F2) ∧\n", + " δ = {x | x∈((Z1*Z2)*Σ)*ℙ(Z_gesamt) ∧\n", + " ∃zustand1,zustand2,symbol,menge.(\n", + " x=((zustand1, zustand2), symbol)↦menge ∧\n", + " zustand1∈Z1 ∧ zustand2∈Z2 ∧ symbol∈Σ ∧\n", + " menge = δ1(zustand1, symbol)*δ2(zustand2, symbol))}\n", + "\n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " \"LibraryStrings.def\";\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes:{x | ∃y.(x=TO_STRING(y) ∧ y∈F)}); //Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes:{x | ∃y.(x=TO_STRING(y) ∧ y∈Z_gesamt\\F)}); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"black\",label:\"\",edges:{\"\"}*{x | ∃y.(x=TO_STRING(y) ∧ y∈S)}); // Kanten für Startknoten\n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"0\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∉δ(x,1) ∧ a=TO_STRING(x) ∧ b=TO_STRING(y))}); \n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"1\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,1) ∧ y∉δ(x,0) ∧ a=TO_STRING(x) ∧ b=TO_STRING(y))});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"green\",label:\"0, 1\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∈δ(x,1)∧ a=TO_STRING(x) ∧ b=TO_STRING(y))})\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bei dieser Konstruktion können hier viele Zustände nicht erreicht werden. Dennoch akzeptiert der Automat die gewünsche Sprache." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"719pt\"\n", + " viewBox=\"0.00 0.00 540.00 718.76\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.73 0.73) rotate(0) translate(4 975.17)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-975.17 731.65,-975.17 731.65,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"56.32\" cy=\"-720\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"56.32\" cy=\"-720\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"56.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z22)</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"138.32\" cy=\"-407\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"138.32\" cy=\"-407\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"138.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z22)</text>\n", + "</g>\n", + "<!-- 0->1 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>0->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M70.51,-665.18C84.7,-611.39 106.5,-528.68 121.54,-471.66\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"125.01,-472.24 124.17,-461.68 118.24,-470.46 125.01,-472.24\"/>\n", + "<text text-anchor=\"middle\" x=\"101.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 6 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"300.32\" cy=\"-101\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"300.32\" y=\"-97.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z22)</text>\n", + "</g>\n", + "<!-- 0->6 -->\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>0->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M45.9,-664.38C34.3,-590.21 22.38,-454.91 65.32,-350.68 103.28,-258.54 192.4,-180.38 249.33,-137.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"251.56,-140.14 257.49,-131.36 247.38,-134.53 251.56,-140.14\"/>\n", + "<text text-anchor=\"middle\" x=\"69.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 1->1 -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M186.58,-436.21C201.21,-435.47 212.65,-425.74 212.65,-407 212.65,-392.8 206.08,-383.77 196.53,-379.91\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"197.09,-376.45 186.58,-377.79 195.63,-383.3 197.09,-376.45\"/>\n", + "<text text-anchor=\"middle\" x=\"216.65\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 1->6 -->\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>1->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M164.53,-356.82C193.77,-301.95 240.95,-213.42 271.29,-156.49\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"274.39,-158.1 276.01,-147.63 268.22,-154.81 274.39,-158.1\"/>\n", + "<text text-anchor=\"middle\" x=\"228.32\" y=\"-246.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"183.32\" cy=\"-720\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"183.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z20)</text>\n", + "</g>\n", + "<!-- 2->6 -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>2->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M192.9,-668.51C214.27,-555.83 265.77,-284.25 288.82,-162.65\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"292.28,-163.23 290.7,-152.76 285.4,-161.93 292.28,-163.23\"/>\n", + "<text text-anchor=\"middle\" x=\"256.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 8 -->\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>8</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"438.32\" cy=\"-407\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"438.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z21)</text>\n", + "</g>\n", + "<!-- 2->8 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M216.14,-678.98C263,-621.83 348.95,-517 399.1,-455.83\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"402,-457.82 405.64,-447.87 396.59,-453.38 402,-457.82\"/>\n", + "<text text-anchor=\"middle\" x=\"314.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"306.32\" cy=\"-720\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"306.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z21)</text>\n", + "</g>\n", + "<!-- 3->6 -->\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>3->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M305.82,-667.46C304.72,-554.46 302.11,-285.36 300.92,-163.65\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"304.42,-163.36 300.82,-153.4 297.42,-163.43 304.42,-163.36\"/>\n", + "<text text-anchor=\"middle\" x=\"307.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->8 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M326.52,-671.43C350.1,-615.87 389.08,-524.03 414.22,-464.79\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"417.45,-466.14 418.14,-455.57 411.01,-463.41 417.45,-466.14\"/>\n", + "<text text-anchor=\"middle\" x=\"376.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"429.32\" cy=\"-720\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"429.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z20)</text>\n", + "</g>\n", + "<!-- 4->6 -->\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>4->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M416.86,-668.69C404.27,-617.23 384.55,-534.9 369.32,-463.32 346.94,-358.09 324.14,-234.89 311.16,-162.94\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"314.53,-161.92 309.32,-152.7 307.64,-163.16 314.53,-161.92\"/>\n", + "<text text-anchor=\"middle\" x=\"373.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 4->8 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>4->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M430.81,-667.64C432.38,-613.29 434.87,-527.5 436.54,-469.56\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"440.05,-469.53 436.84,-459.43 433.05,-469.33 440.05,-469.53\"/>\n", + "<text text-anchor=\"middle\" x=\"437.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 5 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"552.32\" cy=\"-720\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"552.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z21)</text>\n", + "</g>\n", + "<!-- 5->6 -->\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>5->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M558.69,-668.02C565.67,-594.61 570.54,-456.34 525.32,-350.68 487.31,-261.83 404.01,-183.66 350.12,-139.66\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"352.05,-136.72 342.07,-133.16 347.65,-142.17 352.05,-136.72\"/>\n", + "<text text-anchor=\"middle\" x=\"558.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 5->8 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>5->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M534.64,-670.75C514.38,-615.47 481.2,-524.95 459.56,-465.92\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"462.78,-464.55 456.05,-456.37 456.21,-466.96 462.78,-464.55\"/>\n", + "<text text-anchor=\"middle\" x=\"499.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 6->1 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>6->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M264.08,-139.12C239.43,-166.14 207.71,-204.67 187.32,-243.5 171.2,-274.22 159.54,-311.06 151.65,-341.9\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"148.24,-341.13 149.22,-351.68 155.03,-342.82 148.24,-341.13\"/>\n", + "<text text-anchor=\"middle\" x=\"191.32\" y=\"-246.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 6->6 -->\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>6->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M344.96,-128.74C359.29,-128.46 370.65,-119.21 370.65,-101 370.65,-87.34 364.26,-78.73 355.02,-75.15\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"355.44,-71.67 344.96,-73.26 354.14,-78.55 355.44,-71.67\"/>\n", + "<text text-anchor=\"middle\" x=\"374.65\" y=\"-97.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 7 -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>7</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"675.32\" cy=\"-720\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"675.32\" y=\"-716.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z20)</text>\n", + "</g>\n", + "<!-- 7->6 -->\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>7->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M667.2,-668.19C653.95,-594.68 623.28,-455.96 566.32,-350.68 515.19,-256.14 414.67,-177.5 352.9,-135.33\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"354.69,-132.32 344.45,-129.62 350.78,-138.12 354.69,-132.32\"/>\n", + "<text text-anchor=\"middle\" x=\"618.32\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 7->8 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>7->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M643.85,-677.7C600.56,-620.89 522.73,-518.76 476.27,-457.79\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"478.77,-455.3 469.93,-449.47 473.2,-459.54 478.77,-455.3\"/>\n", + "<text text-anchor=\"middle\" x=\"560.32\" y=\"-560.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 8->6 -->\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>8->6</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M420.75,-357.44C408.58,-324.85 391.52,-281.15 374.32,-243.5 360.88,-214.06 344.31,-182.05 330.26,-155.93\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"333.24,-154.08 325.4,-146.95 327.08,-157.41 333.24,-154.08\"/>\n", + "<text text-anchor=\"middle\" x=\"383.32\" y=\"-246.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 8->8 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>8->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M481.93,-436.25C496.75,-436.4 508.65,-426.65 508.65,-407 508.65,-392.11 501.81,-382.9 492.06,-379.38\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"492.36,-375.89 481.93,-377.75 491.25,-382.8 492.36,-375.89\"/>\n", + "<text text-anchor=\"middle\" x=\"512.65\" y=\"-403.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 9 -->\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>9</title>\n", + "</g>\n", + "<!-- 9->2 -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>9->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M183.32,-917.85C183.32,-888.9 183.32,-828.97 183.32,-782.8\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"186.82,-782.58 183.32,-772.58 179.82,-782.58 186.82,-782.58\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Indem man die Endzustände in der obigen Konstruktion so wählt, dass man in einem Zustand in $F_1$ und $F_2$ landet, kann man auch zeigen, dass der Schnitt zweier regulärer Sprachen regulär ist." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: NFA" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE NFA\n", + "SETS\n", + " Z = {z10,z11, z12, z20,z21,z22}\n", + "CONSTANTS Σ, M, Z_gesamt, δ, S, F,\n", + " M1, Z1, δ1, S1, F1,\n", + " M2, Z2, δ2, S2, F2\n", + " \n", + "PROPERTIES\n", + " Σ = {0,1}∧\n", + " Z1 ∩ Z2 = ∅ ∧\n", + " Z= Z1 ∪ Z2\n", + " \n", + " ∧\n", + " // Der Automat M1 (L(M1)={w| |w|=0 ∨ w=u0 mit u∈{0,1}*}):\n", + " M1 = (Σ, Z1, δ1, S1, F1) ∧\n", + " Z1 ⊆ Z ∧ Z1 = {z10,z11,z12} ∧\n", + " F1 ⊆ Z1 ∧ S1 ⊆ Z1 ∧\n", + " δ1 ∈ (Z1×Σ) → ℙ(Z1)\n", + " ∧\n", + " S1 = {z10} ∧ F1 = {z10, z12} ∧\n", + " δ1 = { (z10,0)↦{z12}, (z10,1)↦{z11},\n", + " (z11,0)↦{z12}, (z11,1)↦{z11},\n", + " (z12,0)↦{z12}, (z12,1)↦{z11}} ∧\n", + "\n", + " // Der Automat M2 (L(M2)={0^n|n∈ℕ_0}):\n", + " M2 = (Σ, Z2, δ2, S2, F2) ∧\n", + " Z2 ⊆ Z ∧\n", + " δ2 ∈ (Z2×Σ) → ℙ(Z2) ∧\n", + " S2 ⊆ Z2 ∧ F2 ⊆ Z2 \n", + " ∧\n", + " Z2 = {z20,z21,z22} ∧\n", + " S2 = {z20} ∧ F2 = {z20, z21} ∧\n", + " δ2 = { (z20,0)↦{z21}, (z20,1)↦{z22},\n", + " (z21,0)↦{z21}, (z21,1)↦{z22},\n", + " (z22,0)↦{z22}, (z22,1)↦{z22}} ∧\n", + "\n", + " //Eigene Konstruktion analog zu \"Grundkurs Theoretische Informatik\" (s.o.)\n", + " M = (Σ, Z_gesamt, δ, S, F) ∧\n", + " Z_gesamt = Z1*Z2 ∧\n", + " S = S1*S2 ∧\n", + " F = F1*F2 ∧\n", + " δ = {x | x∈((Z*Z)*Σ)*ℙ(Z_gesamt) ∧\n", + " ∃zustand1,zustand2,symbol,menge.(\n", + " x=((zustand1, zustand2), symbol)↦menge ∧\n", + " zustand1∈Z1 ∧ zustand2∈Z2 ∧ symbol∈Σ ∧\n", + " menge = δ1(zustand1, symbol)*δ2(zustand2, symbol))}\n", + " \n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " \"LibraryStrings.def\";\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes:{x | ∃y.(x=TO_STRING(y) ∧ y∈F)}); //Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes:{x | ∃y.(x=TO_STRING(y) ∧ y∈Z_gesamt\\F)}); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"black\",label:\"\",edges:{\"\"}*{x | ∃y.(x=TO_STRING(y) ∧ y∈S)}); // Kanten für Startknoten\n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"0\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∉δ(x,1) ∧ a=TO_STRING(x) ∧ b=TO_STRING(y))}); \n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"1\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,1) ∧ y∉δ(x,0) ∧ a=TO_STRING(x) ∧ b=TO_STRING(y))});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"green\",label:\"0, 1\",edges:{a,b|∃x,y.({(x,0),(x,1)} ⊆dom(δ) ∧ y∈δ(x,0) ∧ y∈δ(x,1)∧ a=TO_STRING(x) ∧ b=TO_STRING(y))})\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"718pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.68\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.84 0.84) rotate(0) translate(4 850.11)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-850.11 638.65,-850.11 638.65,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"201.32\" cy=\"-679\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"201.32\" cy=\"-679\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"201.32\" y=\"-675.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z20)</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"266.32\" cy=\"-470\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"266.32\" cy=\"-470\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"266.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z21)</text>\n", + "</g>\n", + "<!-- 0->3 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M218.83,-625.45C223.6,-610.91 228.73,-595.11 233.32,-580.5 238.04,-565.51 243,-549.32 247.59,-534.1\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"251.02,-534.85 250.56,-524.27 244.32,-532.83 251.02,-534.85\"/>\n", + "<text text-anchor=\"middle\" x=\"240.32\" y=\"-570.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 7 -->\n", + "<g id=\"node8\" class=\"node\">\n", + "<title>7</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"213.32\" cy=\"-266\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"213.32\" y=\"-262.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z22)</text>\n", + "</g>\n", + "<!-- 0->7 -->\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>0->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M196.51,-622.76C192.59,-569.24 188.43,-485.82 193.32,-413.68 195.25,-385.38 199.23,-354.22 203.13,-327.93\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"206.64,-328.15 204.68,-317.74 199.72,-327.1 206.64,-328.15\"/>\n", + "<text text-anchor=\"middle\" x=\"197.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"332.32\" cy=\"-679\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"332.32\" cy=\"-679\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"332.32\" y=\"-675.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z21)</text>\n", + "</g>\n", + "<!-- 1->3 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M315.5,-625.23C306.61,-597.36 295.65,-562.96 286.33,-533.73\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"289.61,-532.5 283.23,-524.03 282.94,-534.62 289.61,-532.5\"/>\n", + "<text text-anchor=\"middle\" x=\"303.32\" y=\"-570.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 1->7 -->\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>1->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M351.24,-625.72C367.96,-570.82 385.67,-483.01 357.32,-413.68 338.65,-368 298.14,-328.87 264.82,-302.55\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"266.58,-299.48 256.53,-296.13 262.3,-305.02 266.58,-299.48\"/>\n", + "<text text-anchor=\"middle\" x=\"375.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"70.32\" cy=\"-679\" rx=\"52.16\" ry=\"52.16\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"70.32\" cy=\"-679\" rx=\"56.15\" ry=\"56.15\"/>\n", + "<text text-anchor=\"middle\" x=\"70.32\" y=\"-675.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z20)</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M108.58,-637.6C140.72,-603.65 186.72,-555.07 220.76,-519.12\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"223.5,-521.32 227.83,-511.65 218.41,-516.51 223.5,-521.32\"/>\n", + "<text text-anchor=\"middle\" x=\"178.32\" y=\"-570.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2->7 -->\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>2->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M88.58,-625.53C115.39,-548.48 165.23,-405.23 193.11,-325.09\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"196.42,-326.24 196.4,-315.64 189.81,-323.94 196.42,-326.24\"/>\n", + "<text text-anchor=\"middle\" x=\"165.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M319.44,-489.07C331.67,-487.43 340.65,-481.07 340.65,-470 340.65,-462.22 336.21,-456.76 329.32,-453.64\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"330.01,-450.2 319.44,-450.93 328.16,-456.95 330.01,-450.2\"/>\n", + "<text text-anchor=\"middle\" x=\"344.65\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->7 -->\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>3->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M252.26,-415.4C245.07,-388 236.31,-354.6 228.91,-326.42\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"232.29,-325.47 226.36,-316.69 225.51,-327.25 232.29,-325.47\"/>\n", + "<text text-anchor=\"middle\" x=\"243.32\" y=\"-362.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"52.32\" cy=\"-470\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"52.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z10|->z22)</text>\n", + "</g>\n", + "<!-- 4->7 -->\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>4->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M76.36,-423.33C87.92,-403 102.67,-379.24 118.32,-359.5 132.72,-341.36 150.46,-323.19 166.71,-307.82\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"169.13,-310.35 174.05,-300.96 164.36,-305.23 169.13,-310.35\"/>\n", + "<text text-anchor=\"middle\" x=\"122.32\" y=\"-362.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 8 -->\n", + "<g id=\"node9\" class=\"node\">\n", + "<title>8</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"182.32\" cy=\"-68\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"182.32\" y=\"-64.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z12|->z22)</text>\n", + "</g>\n", + "<!-- 4->8 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M68.27,-419.95C92.23,-346.23 137.45,-207.09 163.17,-127.95\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"166.59,-128.73 166.36,-118.14 159.94,-126.56 166.59,-128.73\"/>\n", + "<text text-anchor=\"middle\" x=\"139.32\" y=\"-262.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 5 -->\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"459.32\" cy=\"-679\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"459.32\" y=\"-675.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z20)</text>\n", + "</g>\n", + "<!-- 5->3 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>5->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M423.93,-640.03C392.33,-606.14 345.89,-556.33 311.6,-519.56\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"313.85,-516.84 304.47,-511.92 308.73,-521.62 313.85,-516.84\"/>\n", + "<text text-anchor=\"middle\" x=\"366.32\" y=\"-570.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 5->7 -->\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>5->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M462.94,-626.54C463.07,-607.74 461.83,-586.45 457.32,-567.5 432.91,-464.73 417.97,-433.23 342.32,-359.5 319.37,-337.13 290.66,-316 266.14,-299.59\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"267.94,-296.59 257.67,-293.99 264.08,-302.43 267.94,-296.59\"/>\n", + "<text text-anchor=\"middle\" x=\"450.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 6 -->\n", + "<g id=\"node7\" class=\"node\">\n", + "<title>6</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"582.32\" cy=\"-679\" rx=\"52.15\" ry=\"52.15\"/>\n", + "<text text-anchor=\"middle\" x=\"582.32\" y=\"-675.9\" font-family=\"Times,serif\" font-size=\"12.00\">(z11|->z21)</text>\n", + "</g>\n", + "<!-- 6->3 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>6->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M544.59,-642.29C536.79,-635.5 528.46,-628.65 520.32,-622.68 502.41,-609.52 392.6,-544.81 323.35,-504.28\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"325.1,-501.25 314.7,-499.22 321.56,-507.29 325.1,-501.25\"/>\n", + "<text text-anchor=\"middle\" x=\"450.32\" y=\"-570.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 6->7 -->\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>6->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M568.76,-628.42C551.09,-571.22 515.51,-476.94 458.32,-413.68 406.11,-355.91 325.74,-313.81 271.42,-289.9\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"272.49,-286.56 261.93,-285.79 269.71,-292.98 272.49,-286.56\"/>\n", + "<text text-anchor=\"middle\" x=\"532.32\" y=\"-466.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 7->7 -->\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>7->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M262.62,-284.09C274.68,-282.75 283.65,-276.72 283.65,-266 283.65,-258.46 279.21,-253.25 272.39,-250.35\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"273.17,-246.93 262.62,-247.91 271.48,-253.73 273.17,-246.93\"/>\n", + "<text text-anchor=\"middle\" x=\"287.65\" y=\"-262.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 7->8 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>7->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M205.3,-214.27C201.23,-188.52 196.25,-157.05 191.97,-129.99\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"195.39,-129.19 190.37,-119.86 188.47,-130.28 195.39,-129.19\"/>\n", + "<text text-anchor=\"middle\" x=\"202.32\" y=\"-163.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 8->7 -->\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>8->7</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M180.38,-120.29C180.51,-137.32 181.5,-156.31 184.32,-173.5 186.13,-184.45 188.95,-195.9 192.15,-206.84\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"188.9,-208.18 195.17,-216.72 195.6,-206.14 188.9,-208.18\"/>\n", + "<text text-anchor=\"middle\" x=\"188.32\" y=\"-163.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 8->8 -->\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>8->8</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M231.62,-86.09C243.68,-84.75 252.65,-78.72 252.65,-68 252.65,-60.46 248.21,-55.25 241.39,-52.35\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"242.17,-48.93 231.62,-49.91 240.48,-55.73 242.17,-48.93\"/>\n", + "<text text-anchor=\"middle\" x=\"256.65\" y=\"-64.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 9 -->\n", + "<g id=\"node10\" class=\"node\">\n", + "<title>9</title>\n", + "</g>\n", + "<!-- 9->0 -->\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>9->0</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M201.32,-804.87C201.32,-790.03 201.32,-767.58 201.32,-745.79\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"204.82,-745.52 201.32,-735.52 197.82,-745.52 204.82,-745.52\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Zuletzt bleibt noch die Spiegelung einer Sprache. Um dies zu erreichen erstellen wir aus einem DFA $M$ einen NFA $M_2$ (Vorgehen nach [Grundkurs Theoretische Informatik](https://link.springer.com/content/pdf/10.1007/978-3-8348-2202-4.pdf \"Vossen, G., & Witt, K. U. (2016). Grundkurs Theoretische Informatik. Springer Fachmedien Wiesbaden.\"), Seite 101). $M_2$ hat als Startzustände die Endzustände von $M$ und als einzigen Endzustand den Startzustand von $M$. Die Übergänge von $M_2$ erhält man, indem man alle Übergange von $M$ umdreht. Dadurch ist der Automat ggf. auch nicht deterministisch." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: DFA" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "::load\n", + "MACHINE DFA\n", + "SETS\n", + " Z = {z0,z1,z2,z3}\n", + "CONSTANTS Σ, M, δ, δ2, F, M2, z_start\n", + "PROPERTIES\n", + " Σ = {0,1}\n", + " ∧\n", + " M = (Σ, Z, δ, z_start, F) ∧\n", + " δ ∈ (Z×Σ) → Z ∧\n", + " z_start ∈ Z ∧\n", + " F ⊆ Z ∧\n", + " \n", + " M2 = (Σ, Z, δ2, F, {z_start}) ∧\n", + " δ2 ∈ (Z×Σ) <-> ℙ(Z) ∧\n", + " δ2 = {x |∃a,s,s2.(x=((s2, a)↦{s}) ∧ a∈Σ ∧ s∈Z ∧ s2∈Z ∧ δ(s,a) = s2)}\n", + " \n", + "DEFINITIONS // Für den Zustandsgraphen:\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes:{z_start}); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes:Z\\{z_start}); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"0\",edges:{x,z| ∃y.(y∈δ2[{(x,0)}] ∧ y∉δ2[{(x,1)}] ∧ z∈y)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"1\",edges:{x,z| ∃y.(y∈δ2[{(x,1)}] ∧ y∉δ2[{(x,0)}] ∧ z∈y)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"0, 1\",edges:{x,z| ∃y.(y∈δ2[{(x,0)}] ∧ y∈δ2[{(x,1)}] ∧ z∈y)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\"}*F) // Kanten für Startknoten\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants M=({0,1}, //Σ\n", + " {z0,z1,z2,z3}, //Z\n", + " {(z0,0)↦z1, (z0,1)↦z3,\n", + " (z1,0)↦z3, (z1,1)↦z2,\n", + " (z2,0)↦z2, (z2,1)↦z2,\n", + " (z3,0)↦z3, (z3,1)↦z3 }, //δ\n", + " z0, {z0, z2}) //z0, F" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": false + }, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"718pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.82\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 726.01)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-726.01 545.17,-726.01 545.17,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"189.5\" cy=\"-56\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"189.5\" cy=\"-56\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"189.5\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"189.5\" cy=\"-280\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"189.5\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "</g>\n", + "<!-- 1->0 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>1->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M189.5,-261.21C189.5,-223.71 189.5,-136.13 189.5,-88.77\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"193,-88.75 189.5,-78.75 186,-88.75 193,-88.75\"/>\n", + "<text text-anchor=\"middle\" x=\"193.5\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"152.5\" cy=\"-494\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"152.5\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "</g>\n", + "<!-- 2->1 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M155.53,-475.65C161.95,-438.83 177,-352.64 184.73,-308.34\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"188.21,-308.74 186.48,-298.29 181.31,-307.54 188.21,-308.74\"/>\n", + "<text text-anchor=\"middle\" x=\"176.5\" y=\"-383.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 2->2 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M164.83,-507.95C176.41,-515.18 188.97,-510.53 188.97,-494 188.97,-482.12 182.48,-476.37 174.53,-476.77\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"173.18,-473.53 164.83,-480.05 175.42,-480.16 173.18,-473.53\"/>\n", + "<text text-anchor=\"middle\" x=\"200.47\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"392.5\" cy=\"-494\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"392.5\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "</g>\n", + "<!-- 3->0 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M385.03,-476.97C354.9,-412.24 241.95,-169.66 202.89,-85.76\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"206,-84.15 198.61,-76.57 199.66,-87.11 206,-84.15\"/>\n", + "<text text-anchor=\"middle\" x=\"305.5\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "</g>\n", + "<!-- 3->1 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M380.11,-480.06C345.99,-444.43 250.48,-344.68 209.06,-301.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"211.43,-298.84 201.99,-294.04 206.38,-303.69 211.43,-298.84\"/>\n", + "<text text-anchor=\"middle\" x=\"301.5\" y=\"-383.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M404.83,-507.95C416.41,-515.18 428.97,-510.53 428.97,-494 428.97,-482.12 422.48,-476.37 414.53,-476.77\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"413.18,-473.53 404.83,-480.05 415.42,-480.16 413.18,-473.53\"/>\n", + "<text text-anchor=\"middle\" x=\"440.47\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">0, 1</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "</g>\n", + "<!-- 4->0 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M70.89,-658.8C87.63,-573.87 161.53,-198.9 183.39,-88\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"186.84,-88.6 185.34,-78.11 179.97,-87.24 186.84,-88.6\"/>\n", + "</g>\n", + "<!-- 4->2 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M75.5,-658.97C90.52,-626.98 123.03,-557.76 140.62,-520.3\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"143.87,-521.61 144.95,-511.07 137.53,-518.63 143.87,-521.61\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nun haben wir bewiesen, dass die regulären Sprachen abgeschlossen über \n", + "* Vereinigung A ∪ B\n", + "* Komplement A̅\n", + "* Schnitt A ∩ B\n", + "* Differenz A/B\n", + "* Konkatenation AB\n", + "* Iteration A*\n", + "* Spiegelung sp(A)\n", + "\n", + "sind. Aber was kann man eigentlich damit machen?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit Hilfe der Abschlusseigenschaften für reguläre Sprachen kann man zeigen, dass eine Sprache\n", + "1. regulär ist\n", + "2. nicht regulär ist (über Beweis mit Widerspruch)\n", + "\n", + "Um zu zeigen, dass eine Sprache regulär ist, findet man zwei (oder eine) reguläre Sprachen, die mit Hilfe einer oder mehrerer der oben angegebenen Operationen die gewünschte Sprache ergeben.\n", + "\n", + "Will man zum Beispiel zeigen, dass die Sprache $L=\\{0^m1^n\\}$ regulär ist, dann wählt man die Sprachen $L_1=\\{0^m\\}$ und $L_2=\\{1^n\\}$. Diese sind aus der Vorlesung als regulär bekannt. Damit gilt dann, dass $L=L_1L_2$ und somit ist L regulär.\n", + "\n", + "Dabei muss man allerdings beachten, dass $L_1$ und $L_2$ unabhängig voneinander sind. Man kann nicht $L_1=\\{0^n\\}$ und $L_2=\\{1^n\\}$ wählen und damit zeigen, dass $L_3=L_1L_2=\\{0^n1^n\\}$ regulär ist. Dabei wurde die Konkatenation falsch verwendet. In diesem Fall wäre $L_3=L_1L_2=\\{0^m1^n\\}=L$, was wie oben beschrieben regulär ist.\n", + "\n", + "Um zu zeigen, dass eine Sprache $L$ nicht regulär ist, nimmt man für einen Widerspruchsbeweis an, dass $L$ regulär sei. Dann wählt man eine nicht reguläre Sprache $L_1$ und ggf. eine reguläre Sprache $L_2$ und führt mit Hilfe der Operationen $L$ und ggf. $L_2$ auf $L_1$ zurück. Man zeigt also z.B. dass $L_2∩L=L_1$ gilt. Da $L_2$ regulär ist und die regulären Sprachen abgeschlossen bezüglich des Schnittes zweier Sprachen sind, müsste $L_1$ auch reulär sein, wenn $L$ regulär wäre. Da $L_1$ aber nach Voraussetzung nicht regulär ist, kann $L$ nicht regulär gewesen sein. Das ist ein Wiederspruch zur Annahme und somit ist $L$ nicht regulär. Ein konkretes Beispiel hierfür ist $L=\\{x∈\\{0,1\\}^*|\\text{x hat gleich viele 0en und 1en}\\}$, $L_1=\\{0^n1^n\\}$ und $L_2=L(0^*1^*)$. Aus der Vorlesung ist bekannt, dass $L_1$ nicht regulär und $L_2$ regulär ist. Außerdem gilt $L_2∩L=L_1$. Daher kann L nicht regulär sein." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ProB 2", + "language": "prob", + "name": "prob2" + }, + "language_info": { + "codemirror_mode": "prob2_jupyter_repl", + "file_extension": ".prob", + "mimetype": "text/x-prob2-jupyter-repl", + "name": "prob" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-2/DFA.ipynb b/info4/kapitel-2/DFA.ipynb index dc0fca0ed30292f548b7644c6c939b34ce199ce5..1182c2660b38bacda49b1cae10aa21f42526a555 100644 --- a/info4/kapitel-2/DFA.ipynb +++ b/info4/kapitel-2/DFA.ipynb @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -46,7 +46,7 @@ "Loaded machine: DFA" ] }, - "execution_count": 2, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -89,7 +89,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 3, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -121,7 +121,7 @@ "z1" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -139,7 +139,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -151,7 +151,7 @@ "z2" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -194,7 +194,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -206,7 +206,7 @@ "FALSE" ] }, - "execution_count": 6, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -242,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -251,90 +251,104 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"540pt\" height=\"717pt\"\n", - " viewBox=\"0.00 0.00 540.00 717.37\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(0.985401 0.985401) rotate(0) translate(4 724)\">\n", + "<svg width=\"540pt\" height=\"716pt\"\n", + " viewBox=\"0.00 0.00 540.00 716.10\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 726.01)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-724 545,-724 545,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-726.01 546.49,-726.01 546.49,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"61.3196\" cy=\"-55\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"61.3196\" cy=\"-55\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"61.3196\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"59.74\" cy=\"-56\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"59.74\" cy=\"-56\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"59.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M81.0771,-65.4263C91.6695,-67.1981 101.32,-63.7227 101.32,-55 101.32,-49.2758 97.1637,-45.8113 91.3128,-44.6066\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"91.0883,-41.106 81.0771,-44.5737 91.0657,-48.106 91.0883,-41.106\"/>\n", - "<text text-anchor=\"middle\" x=\"104.32\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M79.72,-66.43C90.44,-68.2 100.2,-64.72 100.2,-56 100.2,-50.28 96,-46.81 90.08,-45.61\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"89.74,-42.11 79.72,-45.57 89.71,-49.11 89.74,-42.11\"/>\n", + "<text text-anchor=\"middle\" x=\"104.2\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M77.0575,-70.4297C96.422,-82.4596 119.32,-77.3164 119.32,-55 119.32,-36.1705 103.018,-29.5669 86.2926,-35.1891\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"84.5921,-32.1218 77.0575,-39.5703 87.5925,-38.4462 84.5921,-32.1218\"/>\n", - "<text text-anchor=\"middle\" x=\"122.32\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M75.9,-71.61C95.36,-83.41 118.2,-78.2 118.2,-56 118.2,-37.27 101.94,-30.63 85.17,-36.1\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"83.51,-33.02 75.9,-40.39 86.44,-39.37 83.51,-33.02\"/>\n", + "<text text-anchor=\"middle\" x=\"122.2\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"317.32\" cy=\"-492\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"317.32\" y=\"-488.4\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"282.74\" cy=\"-494\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"282.74\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"206.32\" cy=\"-278\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"206.32\" y=\"-274.4\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"211.74\" cy=\"-280\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"211.74\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M309.337,-475.753C290.303,-439.4 242.121,-347.378 219.035,-303.284\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"222.119,-301.629 214.379,-294.393 215.917,-304.876 222.119,-301.629\"/>\n", - "<text text-anchor=\"middle\" x=\"268.32\" y=\"-381.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M277.17,-476.36C264.88,-439.69 235.39,-351.63 220.56,-307.36\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"223.87,-306.22 217.38,-297.85 217.24,-308.45 223.87,-306.22\"/>\n", + "<text text-anchor=\"middle\" x=\"253.74\" y=\"-383.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"356.32\" cy=\"-55\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"356.32\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"354.74\" cy=\"-56\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"354.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M318.848,-473.947C324.806,-407.501 346.497,-165.564 353.857,-83.4682\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"357.352,-83.68 354.759,-73.4073 350.38,-83.0548 357.352,-83.68\"/>\n", - "<text text-anchor=\"middle\" x=\"340.32\" y=\"-274.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M285.6,-475.64C296.67,-408.64 336.64,-166.59 350.2,-84.47\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"353.69,-84.85 351.86,-74.41 346.78,-83.71 353.69,-84.85\"/>\n", + "<text text-anchor=\"middle\" x=\"324.74\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 2->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>2->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M196.806,-262.5C172.774,-225.873 109.358,-129.217 78.5736,-82.2975\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"81.4596,-80.3158 73.0474,-73.8748 75.6068,-84.1559 81.4596,-80.3158\"/>\n", - "<text text-anchor=\"middle\" x=\"141.32\" y=\"-167.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M201.76,-264.43C176.57,-227.64 110.09,-130.55 77.82,-83.42\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"80.57,-81.23 72.03,-74.96 74.79,-85.18 80.57,-81.23\"/>\n", + "<text text-anchor=\"middle\" x=\"144.74\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M216.162,-262.5C241.703,-224.868 310.252,-123.873 341.012,-78.5528\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"343.916,-80.5063 346.636,-70.2665 338.125,-76.5751 343.916,-80.5063\"/>\n", - "<text text-anchor=\"middle\" x=\"284.32\" y=\"-167.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M221.34,-264.09C245.71,-226.25 310.11,-126.28 339.6,-80.5\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"342.7,-82.15 345.17,-71.85 336.82,-78.36 342.7,-82.15\"/>\n", + "<text text-anchor=\"middle\" x=\"287.74\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M371.486,-64.813C381.984,-67.7866 392.32,-64.5156 392.32,-55 392.32,-48.7554 387.868,-45.2001 381.841,-44.3341\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"381.165,-40.8779 371.486,-45.187 381.74,-47.8542 381.165,-40.8779\"/>\n", - "<text text-anchor=\"middle\" x=\"395.32\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M370.48,-65.92C380.98,-68.71 391.2,-65.4 391.2,-56 391.2,-49.83 386.8,-46.29 380.81,-45.37\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"380.21,-41.9 370.48,-46.08 380.7,-48.88 380.21,-41.9\"/>\n", + "<text text-anchor=\"middle\" x=\"395.2\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->3 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>3->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M368.524,-68.6734C387.009,-82.8937 410.32,-78.3359 410.32,-55 410.32,-35.3103 393.724,-28.989 377.435,-36.0362\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"375.336,-33.2119 368.524,-41.3266 378.91,-39.231 375.336,-33.2119\"/>\n", - "<text text-anchor=\"middle\" x=\"413.32\" y=\"-51.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M367.32,-69.88C385.92,-83.85 409.2,-79.22 409.2,-56 409.2,-36.41 392.63,-30.05 376.27,-36.93\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"374.22,-34.08 367.32,-42.12 377.73,-40.14 374.22,-34.08\"/>\n", + "<text text-anchor=\"middle\" x=\"413.2\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M317.32,-656.972C317.32,-625.574 317.32,-558.313 317.32,-520.416\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"320.82,-520.115 317.32,-510.115 313.82,-520.115 320.82,-520.115\"/>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M282.74,-658.97C282.74,-627.73 282.74,-561 282.74,-523\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"286.24,-522.65 282.74,-512.65 279.24,-522.65 286.24,-522.65\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -343,7 +357,7 @@ "<Dot visualization: custom_graph []>" ] }, - "execution_count": 7, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -365,7 +379,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -377,7 +391,7 @@ "z2" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -408,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -417,7 +431,7 @@ "Loaded machine: DFA" ] }, - "execution_count": 9, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -460,7 +474,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -469,7 +483,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -487,7 +501,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -499,7 +513,7 @@ "z2" ] }, - "execution_count": 17, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -517,7 +531,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -529,7 +543,7 @@ "TRUE" ] }, - "execution_count": 19, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -540,7 +554,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -552,7 +566,7 @@ "z3" ] }, - "execution_count": 20, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -570,7 +584,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -582,7 +596,7 @@ "FALSE" ] }, - "execution_count": 21, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -600,7 +614,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -617,7 +631,7 @@ "0\t1\t1\n" ] }, - "execution_count": 22, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -628,7 +642,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -649,7 +663,7 @@ "0\t1\t1\t1\n" ] }, - "execution_count": 23, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -663,8 +677,8 @@ "metadata": {}, "source": [ "Anmerkung:\n", - "Für $a \\in \\Sigma$ gilt $\\widehat{\\delta}(z, a) = \\delta(z, a)$, und\n", - "\\item für $x = a_1 a_2 \\cdots a_n$ in $\\Sigma^*$ gilt:\n", + "\n", + "Für $a \\in \\Sigma$ gilt $\\widehat{\\delta}(z, a) = \\delta(z, a)$, und für $x = a_1 a_2 \\cdots a_n$ in $\\Sigma^*$ gilt:\n", "* $\\widehat{\\delta}(z, x) = \\delta( \\cdots \\delta(\\delta(z, a_1), a_2)\\cdots , a_n).$\n", "\n", "Zum Beispiel:" @@ -672,7 +686,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -684,7 +698,7 @@ "z2" ] }, - "execution_count": 24, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -702,7 +716,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -714,7 +728,7 @@ "z2" ] }, - "execution_count": 25, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -732,7 +746,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -744,7 +758,7 @@ "z2" ] }, - "execution_count": 26, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -755,7 +769,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -767,7 +781,7 @@ "z2" ] }, - "execution_count": 27, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -778,7 +792,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -790,7 +804,7 @@ "z2" ] }, - "execution_count": 28, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -810,7 +824,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -819,7 +833,7 @@ "Loaded machine: DFA" ] }, - "execution_count": 1, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -860,7 +874,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -869,7 +883,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 2, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -888,7 +902,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -900,7 +914,7 @@ "z0" ] }, - "execution_count": 31, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -918,7 +932,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -930,7 +944,7 @@ "z1" ] }, - "execution_count": 32, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -941,7 +955,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -953,7 +967,7 @@ "TRUE" ] }, - "execution_count": 33, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -964,7 +978,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -976,7 +990,7 @@ "FALSE" ] }, - "execution_count": 34, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -994,7 +1008,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -1003,73 +1017,84 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"300pt\" height=\"108pt\"\n", - " viewBox=\"0.00 0.00 300.00 108.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 104)\">\n", + "<svg width=\"540pt\" height=\"714pt\"\n", + " viewBox=\"0.00 0.00 540.00 713.63\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 726.01)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-104 297,-104 297,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-726.01 548.39,-726.01 548.39,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"114\" cy=\"-31\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"114\" cy=\"-31\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"114\" y=\"-27.4\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"232.28\" cy=\"-484\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"232.28\" cy=\"-484\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"232.28\" y=\"-480.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"196\" cy=\"-48\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"196\" y=\"-44.4\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"86.28\" cy=\"-260\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"86.28\" y=\"-256.9\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 0->1 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M134.47,-39.8841C140.596,-42.2973 147.47,-44.6221 154,-46 158.315,-46.9104 162.939,-47.4976 167.47,-47.8645\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"167.528,-51.3716 177.689,-48.3697 167.874,-44.3801 167.528,-51.3716\"/>\n", - "<text text-anchor=\"middle\" x=\"157\" y=\"-49.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M217.23,-466.78C198.51,-446.12 166.22,-408.84 143.28,-373.5 124.82,-345.06 107.83,-309.85 97.3,-286.48\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"100.45,-284.96 93.19,-277.24 94.05,-287.8 100.45,-284.96\"/>\n", + "<text text-anchor=\"middle\" x=\"147.28\" y=\"-363.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"274\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"274\" y=\"-14.4\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"213.28\" cy=\"-46\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"213.28\" y=\"-42.9\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 0->2 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>0->2</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M134.035,-21.4992C146.26,-15.9397 162.666,-9.46579 178,-6.6 201.008,-2.30008 227.469,-6.18734 246.611,-10.5518\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"245.877,-13.9755 256.425,-12.9766 247.556,-7.17992 245.877,-13.9755\"/>\n", - "<text text-anchor=\"middle\" x=\"196\" y=\"-10.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M231.34,-461.38C228.19,-389.17 218.05,-156.34 214.51,-75.2\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"217.99,-74.63 214.06,-64.79 211,-74.94 217.99,-74.63\"/>\n", + "<text text-anchor=\"middle\" x=\"227.28\" y=\"-256.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>1->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M180.173,-39.3467C174.125,-36.2776 166.933,-33.1922 160,-31.6 155.717,-30.6162 151.143,-30.0358 146.613,-29.7289\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"146.373,-26.2212 136.282,-29.4485 146.183,-33.2186 146.373,-26.2212\"/>\n", - "<text text-anchor=\"middle\" x=\"157\" y=\"-34.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>1->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M96.04,-275.83C120.33,-312.77 183.8,-409.27 214.77,-456.37\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"211.92,-458.4 220.33,-464.83 217.76,-454.55 211.92,-458.4\"/>\n", + "<text text-anchor=\"middle\" x=\"163.28\" y=\"-363.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M213.118,-41.6378C223.093,-37.7001 236.12,-32.5578 247.476,-28.0754\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"248.889,-31.2803 256.906,-24.3531 246.319,-24.7692 248.889,-31.2803\"/>\n", - "<text text-anchor=\"middle\" x=\"235\" y=\"-36.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M95.42,-243.75C117.29,-207.24 172.82,-114.54 199.09,-70.69\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"202.1,-72.49 204.23,-62.11 196.09,-68.89 202.1,-72.49\"/>\n", + "<text text-anchor=\"middle\" x=\"158.28\" y=\"-149.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M270.584,-35.7817C270.004,-45.3149 271.143,-54 274,-54 275.741,-54 276.844,-50.7749 277.309,-46.0981\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"280.812,-45.8174 277.416,-35.7817 273.812,-45.745 280.812,-45.8174\"/>\n", - "<text text-anchor=\"middle\" x=\"274\" y=\"-57.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M229.41,-55.15C239.77,-57.54 249.75,-54.49 249.75,-46 249.75,-40.43 245.45,-37.2 239.57,-36.31\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"239.21,-32.83 229.41,-36.85 239.58,-39.82 239.21,-32.83\"/>\n", + "<text text-anchor=\"middle\" x=\"253.75\" y=\"-42.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 2->2 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->2</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M268.441,-35.1418C265.17,-52.585 267.023,-72 274,-72 279.614,-72 281.91,-59.4283 280.889,-45.4287\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"284.313,-44.6105 279.559,-35.1418 277.37,-45.508 284.313,-44.6105\"/>\n", - "<text text-anchor=\"middle\" x=\"274\" y=\"-75.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->2</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M226.41,-59.05C244.92,-71.36 267.75,-67.01 267.75,-46 267.75,-28.43 251.79,-22.51 235.75,-28.23\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"233.76,-25.32 226.41,-32.95 236.91,-31.57 233.76,-25.32\"/>\n", + "<text text-anchor=\"middle\" x=\"271.75\" y=\"-42.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M54.4286,-31C63.1155,-31 72.8529,-31 81.8565,-31\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"81.982,-34.5001 91.9819,-31 81.9819,-27.5001 81.982,-34.5001\"/>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M232.28,-658.71C232.28,-626.68 232.28,-557.66 232.28,-516.92\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"235.78,-516.73 232.28,-506.73 228.78,-516.73 235.78,-516.73\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -1078,7 +1103,7 @@ "<Dot visualization: custom_graph []>" ] }, - "execution_count": 7, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -1087,46 +1112,6 @@ ":dot custom_graph" ] }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Preference changed: DOT_HORIZONTAL_LAYOUT = TRUE\n" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":pref DOT_HORIZONTAL_LAYOUT=TRUE" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Preference changed: DOT_LIMIT_PAGE_SIZE = FALSE\n" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":pref DOT_LIMIT_PAGE_SIZE=FALSE" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/info4/kapitel-2/Minimalautomat.ipynb b/info4/kapitel-2/Minimalautomat.ipynb index f776b2a719edf1ebe59cf03a114be7a1b50b97f4..7d1b0b0e83d32e216f7321514e9635e4509cdb0e 100644 --- a/info4/kapitel-2/Minimalautomat.ipynb +++ b/info4/kapitel-2/Minimalautomat.ipynb @@ -6,7 +6,7 @@ "source": [ "## Algorithmus Minimalautomat\n", "\n", - "Dieses Notebook begleitet die Vorlesung zur Myhill-Nerode Äquivalenzrelation und dem Minimalautomaten.\n", + "Dieses Notebook begleitet die Vorlesung zu dem Minimalautomaten.\n", "\n", "Hier ist der Beispiel DFA aus den Folien zur Illustration der Konstruktion des Minimalautomaten.\n" ] @@ -104,108 +104,125 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"300pt\" height=\"242pt\"\n", - " viewBox=\"0.00 0.00 300.00 242.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 238)\">\n", + "<svg width=\"540pt\" height=\"716pt\"\n", + " viewBox=\"0.00 0.00 540.00 716.22\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 726.01)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-238 297,-238 297,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-726.01 546.39,-726.01 546.39,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"270\" cy=\"-148\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"270\" cy=\"-148\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-144.4\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"57.27\" cy=\"-56\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"57.27\" cy=\"-56\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"57.27\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M266.124,-169.807C265.755,-179.562 267.047,-188 270,-188 271.846,-188 273.043,-184.704 273.59,-179.85\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"277.09,-179.902 273.876,-169.807 270.093,-179.703 277.09,-179.902\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-191.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M77.26,-66.43C87.97,-68.2 97.74,-64.72 97.74,-56 97.74,-50.28 93.53,-46.81 87.61,-45.61\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"87.27,-42.11 77.26,-45.57 87.25,-49.11 87.27,-42.11\"/>\n", + "<text text-anchor=\"middle\" x=\"101.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M263.375,-169.114C260.45,-187.096 262.658,-206 270,-206 275.965,-206 278.541,-193.52 277.729,-179.195\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"281.193,-178.674 276.625,-169.114 274.234,-179.436 281.193,-178.674\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-209.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M73.43,-71.61C92.89,-83.41 115.74,-78.2 115.74,-56 115.74,-37.27 99.47,-30.63 82.7,-36.1\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"81.04,-33.02 73.43,-40.39 83.98,-39.37 81.04,-33.02\"/>\n", + "<text text-anchor=\"middle\" x=\"119.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"270\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"270\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"352.27\" cy=\"-56\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"352.27\" cy=\"-56\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"352.27\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M266.124,-43.8066C265.755,-53.5625 267.047,-62 270,-62 271.846,-62 273.043,-58.7041 273.59,-53.8504\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"277.09,-53.9021 273.876,-43.8066 270.093,-53.7031 277.09,-53.9021\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-65.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M372.26,-66.43C382.97,-68.2 392.74,-64.72 392.74,-56 392.74,-50.28 388.53,-46.81 382.61,-45.61\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"382.27,-42.11 372.26,-45.57 382.25,-49.11 382.27,-42.11\"/>\n", + "<text text-anchor=\"middle\" x=\"396.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M263.375,-43.1143C260.45,-61.0956 262.658,-80 270,-80 275.965,-80 278.541,-67.5201 277.729,-53.1954\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"281.193,-52.6738 276.625,-43.1143 274.234,-53.4359 281.193,-52.6738\"/>\n", - "<text text-anchor=\"middle\" x=\"270\" y=\"-83.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M368.43,-71.61C387.89,-83.41 410.74,-78.2 410.74,-56 410.74,-37.27 394.47,-30.63 377.7,-36.1\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"376.04,-33.02 368.43,-40.39 378.98,-39.37 376.04,-33.02\"/>\n", + "<text text-anchor=\"middle\" x=\"414.74\" y=\"-52.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"110\" cy=\"-80\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"110\" y=\"-76.4\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"201.27\" cy=\"-494\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"201.27\" y=\"-490.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188\" cy=\"-112\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188\" y=\"-108.4\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"131.27\" cy=\"-280\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"131.27\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M126.747,-86.6304C136.768,-90.8498 149.977,-96.4115 161.473,-101.252\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"160.437,-104.613 171.011,-105.268 163.153,-98.1616 160.437,-104.613\"/>\n", - "<text text-anchor=\"middle\" x=\"149\" y=\"-99.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M195.78,-476.36C183.67,-439.69 154.59,-351.63 139.97,-307.36\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"143.29,-306.25 136.83,-297.85 136.64,-308.44 143.29,-306.25\"/>\n", + "<text text-anchor=\"middle\" x=\"173.27\" y=\"-383.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188\" cy=\"-58\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188\" y=\"-54.4\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"272.27\" cy=\"-280\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"272.27\" y=\"-276.9\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M127.491,-75.2263C137.251,-72.4011 149.834,-68.7587 160.913,-65.5515\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"161.909,-68.907 170.541,-62.7644 159.962,-62.183 161.909,-68.907\"/>\n", - "<text text-anchor=\"middle\" x=\"149\" y=\"-73.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M206.84,-476.36C219.12,-439.69 248.61,-351.63 263.44,-307.36\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"266.77,-308.45 266.62,-297.85 260.13,-306.22 266.77,-308.45\"/>\n", + "<text text-anchor=\"middle\" x=\"243.27\" y=\"-383.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M204.805,-119.112C214.938,-123.672 228.388,-129.725 240.359,-135.111\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"238.994,-138.335 249.55,-139.247 241.867,-131.952 238.994,-138.335\"/>\n", - "<text text-anchor=\"middle\" x=\"227\" y=\"-133.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M125.71,-262.31C113.31,-225.11 83.24,-134.92 67.41,-87.42\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.65,-86.07 64.17,-77.69 64.01,-88.29 70.65,-86.07\"/>\n", + "<text text-anchor=\"middle\" x=\"101.27\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M205.514,-107.199C213.218,-105.809 222.354,-105.41 230,-108.6 237.328,-111.657 243.983,-116.836 249.638,-122.451\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"247.383,-125.174 256.699,-130.221 252.564,-120.466 247.383,-125.174\"/>\n", - "<text text-anchor=\"middle\" x=\"227\" y=\"-111.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M129.23,-261.5C126.3,-239.08 120.04,-199.2 109.27,-166.5 99.75,-137.6 84.39,-106.41 72.83,-84.74\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"75.82,-82.91 67.98,-75.78 69.66,-86.24 75.82,-82.91\"/>\n", + "<text text-anchor=\"middle\" x=\"117.27\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M204.805,-50.8876C214.938,-46.3279 228.388,-40.2753 240.359,-34.8887\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"241.867,-38.0481 249.55,-30.7527 238.994,-31.6646 241.867,-38.0481\"/>\n", - "<text text-anchor=\"middle\" x=\"227\" y=\"-46.6\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M278.28,-262.31C291.72,-225.02 324.35,-134.47 341.43,-87.06\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"344.83,-87.96 344.93,-77.36 338.25,-85.58 344.83,-87.96\"/>\n", + "<text text-anchor=\"middle\" x=\"316.27\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M198.756,-43.0968C204.925,-35.0957 213.675,-25.9957 224,-21.6 228.322,-19.7599 233.096,-18.8062 237.872,-18.4241\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"238.169,-21.9229 248.153,-18.3782 238.137,-14.9229 238.169,-21.9229\"/>\n", - "<text text-anchor=\"middle\" x=\"227\" y=\"-25.6\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M281.64,-264.05C293.19,-245.06 312.67,-210.96 324.27,-179.5 335.36,-149.41 342.94,-113.48 347.39,-88.35\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"350.88,-88.73 349.11,-78.28 343.98,-87.55 350.88,-88.73\"/>\n", + "<text text-anchor=\"middle\" x=\"333.27\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node6\" class=\"node\"><title>5</title>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M54.0748,-80C62.8864,-80 72.746,-80 81.6534,-80\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"81.9117,-83.5001 91.9117,-80 81.9117,-76.5001 81.9117,-83.5001\"/>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M201.27,-658.97C201.27,-627.73 201.27,-561 201.27,-523\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"204.77,-522.65 201.27,-512.65 197.77,-522.65 204.77,-522.65\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -376,180 +393,209 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"323pt\" height=\"224pt\"\n", - " viewBox=\"0.00 0.00 322.99 223.58\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 219.584)\">\n", + "<svg width=\"540pt\" height=\"717pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.37\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.99 0.99) rotate(0) translate(4 724)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-219.584 319.99,-219.584 319.99,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724 544,-724 544,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M147.012,-25.3223C156.768,-25.6387 165.206,-24.5312 165.206,-22 165.206,-20.418 161.91,-19.3921 157.056,-18.9225\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"157.095,-15.4225 147.012,-18.6777 156.924,-22.4204 157.095,-15.4225\"/>\n", - "<text text-anchor=\"middle\" x=\"168.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M60.77,-550.64C70.46,-550.92 78.76,-549.8 78.76,-547.31 78.76,-545.79 75.68,-544.78 71.08,-544.29\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.87,-540.78 60.77,-543.97 70.66,-547.78 70.87,-540.78\"/>\n", + "<text text-anchor=\"middle\" x=\"82.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M144.216,-33.2646C162.794,-39.4869 183.206,-35.732 183.206,-22 183.206,-10.7354 169.47,-6.18466 154.279,-8.34764\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"153.137,-5.02123 144.216,-10.7354 154.754,-11.8321 153.137,-5.02123\"/>\n", - "<text text-anchor=\"middle\" x=\"186.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M60.19,-553.07C78.13,-555.45 96.76,-553.53 96.76,-547.31 96.76,-542.25 84.46,-540.04 70.23,-540.66\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.84,-537.18 60.19,-541.55 70.46,-544.15 69.84,-537.18\"/>\n", + "<text text-anchor=\"middle\" x=\"100.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188.99\" cy=\"-109.792\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188.99\" y=\"-106.192\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"325.23\" cy=\"-366.61\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"325.23\" y=\"-363.51\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 0->2 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>0->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M133.355,-42.5799C142.165,-57.2404 156.121,-76.712 167.935,-90.9631\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.405,-93.3892 174.588,-98.6748 170.706,-88.8167 165.405,-93.3892\"/>\n", - "<text text-anchor=\"middle\" x=\"156.645\" y=\"-59.1715\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M59.02,-538.46C111.52,-510.26 249.15,-423.75 303.12,-385.22\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"305.3,-387.96 311.32,-379.25 301.18,-382.3 305.3,-387.96\"/>\n", + "<text text-anchor=\"middle\" x=\"176.07\" y=\"-465.24\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-55.5335\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-51.9335\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-658.99\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-655.89\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 0->3 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>0->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M104.887,-12.8005C85.1541,-12.5236 55.9365,-21.4392 37.8464,-32.8499\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"35.4732,-30.2516 29.51,-39.0089 39.6328,-35.8817 35.4732,-30.2516\"/>\n", - "<text text-anchor=\"middle\" x=\"69.3667\" y=\"-11.2252\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M47.82,-567.77C74.54,-596.64 146.56,-642.55 187.35,-657.31\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"186.41,-660.69 197,-660.37 188.52,-654.01 186.41,-660.69\"/>\n", + "<text text-anchor=\"middle\" x=\"112.58\" y=\"-615.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-197.584\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-193.984\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-185.91\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-182.81\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 0->4 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>0->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M120.591,-43.53C117.91,-75.3148 117.753,-134.803 120.121,-169.827\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"116.637,-170.17 120.937,-179.853 123.614,-169.602 116.637,-170.17\"/>\n", - "<text text-anchor=\"middle\" x=\"124.356\" y=\"-103.078\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>0->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M41.76,-524.97C46.01,-462.16 46.14,-284.01 42.14,-214.34\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"45.62,-213.87 41.47,-204.12 38.64,-214.33 45.62,-213.87\"/>\n", + "<text text-anchor=\"middle\" x=\"36.95\" y=\"-373.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M43.8066,-167.373C53.5625,-167.689 62,-166.582 62,-164.05 62,-162.468 58.7041,-161.442 53.8504,-160.973\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"53.889,-157.473 43.8066,-160.728 53.7184,-164.471 53.889,-157.473\"/>\n", - "<text text-anchor=\"middle\" x=\"65\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M238.1,-77.56C247.8,-77.83 256.1,-76.72 256.1,-74.23 256.1,-72.71 253.02,-71.7 248.41,-71.21\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"248.21,-67.7 238.1,-70.89 247.99,-74.7 248.21,-67.7\"/>\n", + "<text text-anchor=\"middle\" x=\"260.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M41.0101,-175.315C59.5881,-181.537 80,-177.782 80,-164.05 80,-152.786 66.2646,-148.235 51.0734,-150.398\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9319,-147.072 41.0101,-152.786 51.5481,-153.882 49.9319,-147.072\"/>\n", - "<text text-anchor=\"middle\" x=\"83\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M237.52,-79.99C255.47,-82.37 274.1,-80.45 274.1,-74.23 274.1,-69.17 261.8,-66.96 247.56,-67.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"247.18,-64.1 237.52,-68.47 247.79,-71.07 247.18,-64.1\"/>\n", + "<text text-anchor=\"middle\" x=\"278.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M43.9022,-161.786C74.8787,-154.532 131.29,-136.375 163.907,-123.307\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.325,-126.508 173.211,-119.433 162.634,-120.046 165.325,-126.508\"/>\n", - "<text text-anchor=\"middle\" x=\"101.905\" y=\"-130.946\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M220.05,-96.55C235.91,-150.06 286.43,-285.22 311.44,-341.47\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"308.32,-343.07 315.66,-350.71 314.69,-340.16 308.32,-343.07\"/>\n", + "<text text-anchor=\"middle\" x=\"260.74\" y=\"-222.41\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M27.5037,-142.611C28.9932,-125.572 29.1476,-101.616 27.9669,-83.1425\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"31.4394,-82.6663 27.1175,-72.9931 24.4638,-83.2502 31.4394,-82.6663\"/>\n", - "<text text-anchor=\"middle\" x=\"23.7353\" y=\"-109.277\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M212.82,-96.79C207.67,-188.02 207.57,-529.54 212.51,-630.63\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"209.02,-630.9 213.07,-640.69 216.01,-630.52 209.02,-630.9\"/>\n", + "<text text-anchor=\"middle\" x=\"207.67\" y=\"-367.11\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M33.0308,-183.436C48.9047,-195.313 77.9754,-205.311 99.3457,-206.64\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"99.4527,-210.139 109.417,-206.538 99.3821,-203.139 99.4527,-210.139\"/>\n", - "<text text-anchor=\"middle\" x=\"63.1882\" y=\"-199.438\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M193.06,-73.98C155.58,-85.58 83.32,-130.5 52.26,-160.9\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.6,-158.61 45.29,-168.29 54.7,-163.41 49.6,-158.61\"/>\n", + "<text text-anchor=\"middle\" x=\"117.66\" y=\"-107.84\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->0 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>2->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M182.88,-92.6802C174.883,-78.7452 161.048,-59.086 148.856,-44.0007\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"151.398,-41.5844 142.3,-36.1559 146.027,-46.0735 151.398,-41.5844\"/>\n", - "<text text-anchor=\"middle\" x=\"159.868\" y=\"-68.7404\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M308.06,-373.56C259.37,-399.12 120.53,-486.2 63.33,-526.62\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"61.28,-523.79 55.19,-532.46 65.36,-529.48 61.28,-523.79\"/>\n", + "<text text-anchor=\"middle\" x=\"180.7\" y=\"-440.49\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M170.738,-111.227C141.77,-117.598 85.0951,-135.637 50.6709,-149.114\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.1323,-145.961 41.1751,-152.956 51.7578,-152.45 49.1323,-145.961\"/>\n", - "<text text-anchor=\"middle\" x=\"108.704\" y=\"-118.571\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M321.9,-348C307.69,-298.33 257.11,-162.56 230.99,-102.93\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"234.14,-101.4 226.87,-93.71 227.75,-104.26 234.14,-101.4\"/>\n", + "<text text-anchor=\"middle\" x=\"271.44\" y=\"-228.86\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M171.748,-104.19C142.749,-94.7672 83.9906,-75.6755 49.3239,-64.4116\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9904,-60.9481 39.3983,-61.1866 47.8273,-67.6055 49.9904,-60.9481\"/>\n", - "<text text-anchor=\"middle\" x=\"108.536\" y=\"-88.7006\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M318.7,-384.02C300.28,-433.18 247.76,-573.27 225.65,-632.27\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"222.36,-631.07 222.12,-641.66 228.91,-633.53 222.36,-631.07\"/>\n", + "<text text-anchor=\"middle\" x=\"268.17\" y=\"-511.55\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M178.17,-124.685C168.213,-138.389 153.297,-158.919 141.829,-174.703\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"138.912,-172.764 135.866,-182.911 144.575,-176.878 138.912,-172.764\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-142.094\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M309.39,-356.63C261.87,-326.71 120.24,-237.51 62.85,-201.37\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"64.41,-198.22 54.08,-195.85 60.68,-204.14 64.41,-198.22\"/>\n", + "<text text-anchor=\"middle\" x=\"182.12\" y=\"-282.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M38.0051,-64.5088C56.4575,-66.2432 86.294,-57.9814 105.951,-46.7299\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"107.98,-49.5854 114.439,-41.1871 104.152,-43.7245 107.98,-49.5854\"/>\n", - "<text text-anchor=\"middle\" x=\"73.978\" y=\"-60.0194\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M208.8,-641.56C185.3,-613.84 113.28,-567.15 70.42,-550.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"71.57,-547.12 60.98,-547.09 69.24,-553.72 71.57,-547.12\"/>\n", + "<text text-anchor=\"middle\" x=\"135.61\" y=\"-586.39\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M40.1623,-55.0103C55.8865,-51.7108 78.8588,-44.6278 96.9732,-37.6947\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"98.4857,-40.859 106.46,-33.8833 95.8761,-34.3636 98.4857,-40.859\"/>\n", - "<text text-anchor=\"middle\" x=\"66.5678\" y=\"-34.7525\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M202.34,-645.88C173.97,-624.14 107.2,-581.69 68.12,-560.15\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.76,-557.06 59.29,-555.4 66.44,-563.22 69.76,-557.06\"/>\n", + "<text text-anchor=\"middle\" x=\"139.23\" y=\"-606.42\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M37.0012,-45.2813C51.6617,-38.7082 74.41,-30.9357 93.14,-25.8973\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"94.2105,-29.2372 103.055,-23.4045 92.5037,-22.4485 94.2105,-29.2372\"/>\n", - "<text text-anchor=\"middle\" x=\"63.0706\" y=\"-23.9893\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M198.07,-652.67C166.21,-636.47 99.08,-594.6 62.77,-568.66\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"64.81,-565.81 54.66,-562.75 60.68,-571.47 64.81,-565.81\"/>\n", + "<text text-anchor=\"middle\" x=\"125.42\" y=\"-614.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M16.8852,-72.9686C15.1641,-88.9428 14.8016,-112.98 15.7978,-132.35\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"12.3209,-132.81 16.491,-142.55 19.3048,-132.336 12.3209,-132.81\"/>\n", - "<text text-anchor=\"middle\" x=\"20.3415\" y=\"-99.0592\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M218.2,-640.52C223.51,-557.09 223.76,-214.77 218.95,-106.92\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"222.43,-106.47 218.44,-96.66 215.44,-106.82 222.43,-106.47\"/>\n", + "<text text-anchor=\"middle\" x=\"223.58\" y=\"-377.12\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->0 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>4->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M129.481,-179.782C132.374,-150.263 132.73,-90.7871 130.551,-53.8831\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"134.025,-53.3942 129.831,-43.6648 127.042,-53.886 134.025,-53.3942\"/>\n", - "<text text-anchor=\"middle\" x=\"126.016\" y=\"-113.232\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M35.11,-204.33C30.68,-262.18 30.38,-440.8 34.22,-514.74\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"30.74,-515.09 34.82,-524.87 37.73,-514.68 30.74,-515.09\"/>\n", + "<text text-anchor=\"middle\" x=\"29.67\" y=\"-349.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M117.533,-180.915C103.624,-168.666 74.6294,-157.812 52.1132,-155.361\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"52.1504,-151.859 41.9885,-154.856 51.8019,-158.85 52.1504,-151.859\"/>\n", - "<text text-anchor=\"middle\" x=\"87.823\" y=\"-156.538\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M56.97,-187.27C92.05,-178.08 165.04,-133.46 198.72,-102.05\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"201.41,-104.31 206.03,-94.78 196.47,-99.35 201.41,-104.31\"/>\n", + "<text text-anchor=\"middle\" x=\"123.85\" y=\"-148.06\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M110.204,-187.332C95.5439,-180.758 72.7956,-172.986 54.0656,-167.948\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"54.7019,-164.499 44.1503,-165.455 52.9951,-171.287 54.7019,-164.499\"/>\n", - "<text text-anchor=\"middle\" x=\"80.135\" y=\"-182.04\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M55.86,-179.59C87.72,-163.39 154.85,-121.52 191.16,-95.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"193.25,-98.39 199.26,-89.67 189.12,-92.73 193.25,-98.39\"/>\n", + "<text text-anchor=\"middle\" x=\"127.51\" y=\"-127.98\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M107.043,-197.061C91.3191,-193.761 68.3467,-186.678 50.2324,-179.745\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"51.3295,-176.414 40.7455,-175.934 48.7199,-182.909 51.3295,-176.414\"/>\n", - "<text text-anchor=\"middle\" x=\"80.6378\" y=\"-176.803\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M51.58,-172.79C79.95,-151.06 146.72,-108.61 185.81,-87.07\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"187.49,-90.14 194.64,-82.32 184.17,-83.98 187.49,-90.14\"/>\n", + "<text text-anchor=\"middle\" x=\"113.69\" y=\"-133.33\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node6\" class=\"node\"><title>5</title>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M260.938,-109.792C247.476,-109.792 231.204,-109.792 217.542,-109.792\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"217.249,-106.292 207.249,-109.792 217.249,-113.292 217.249,-106.292\"/>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M466.87,-366.61C436.03,-366.61 385.87,-366.61 354.26,-366.61\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"353.92,-363.11 343.92,-366.61 353.92,-370.11 353.92,-363.11\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -581,7 +627,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -590,7 +636,7 @@ "Executed operation: Markiere(z1,z0,0)" ] }, - "execution_count": 9, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -601,7 +647,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -610,192 +656,223 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"323pt\" height=\"224pt\"\n", - " viewBox=\"0.00 0.00 322.99 223.58\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 219.584)\">\n", + "<svg width=\"540pt\" height=\"717pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.37\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.99 0.99) rotate(0) translate(4 724)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-219.584 319.99,-219.584 319.99,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724 544,-724 544,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M147.012,-25.3223C156.768,-25.6387 165.206,-24.5312 165.206,-22 165.206,-20.418 161.91,-19.3921 157.056,-18.9225\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"157.095,-15.4225 147.012,-18.6777 156.924,-22.4204 157.095,-15.4225\"/>\n", - "<text text-anchor=\"middle\" x=\"168.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M60.77,-550.64C70.46,-550.92 78.76,-549.8 78.76,-547.31 78.76,-545.79 75.68,-544.78 71.08,-544.29\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.87,-540.78 60.77,-543.97 70.66,-547.78 70.87,-540.78\"/>\n", + "<text text-anchor=\"middle\" x=\"82.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M144.216,-33.2646C162.794,-39.4869 183.206,-35.732 183.206,-22 183.206,-10.7354 169.47,-6.18466 154.279,-8.34764\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"153.137,-5.02123 144.216,-10.7354 154.754,-11.8321 153.137,-5.02123\"/>\n", - "<text text-anchor=\"middle\" x=\"186.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M60.19,-553.07C78.13,-555.45 96.76,-553.53 96.76,-547.31 96.76,-542.25 84.46,-540.04 70.23,-540.66\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.84,-537.18 60.19,-541.55 70.46,-544.15 69.84,-537.18\"/>\n", + "<text text-anchor=\"middle\" x=\"100.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188.99\" cy=\"-109.792\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188.99\" y=\"-106.192\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"325.23\" cy=\"-366.61\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"325.23\" y=\"-363.51\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 0->2 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>0->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M133.355,-42.5799C142.165,-57.2404 156.121,-76.712 167.935,-90.9631\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.405,-93.3892 174.588,-98.6748 170.706,-88.8167 165.405,-93.3892\"/>\n", - "<text text-anchor=\"middle\" x=\"156.645\" y=\"-59.1715\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M59.02,-538.46C111.52,-510.26 249.15,-423.75 303.12,-385.22\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"305.3,-387.96 311.32,-379.25 301.18,-382.3 305.3,-387.96\"/>\n", + "<text text-anchor=\"middle\" x=\"176.07\" y=\"-465.24\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-55.5335\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-51.9335\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-658.99\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-655.89\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 0->3 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>0->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M104.887,-12.8005C85.1541,-12.5236 55.9365,-21.4392 37.8464,-32.8499\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"35.4732,-30.2516 29.51,-39.0089 39.6328,-35.8817 35.4732,-30.2516\"/>\n", - "<text text-anchor=\"middle\" x=\"69.3667\" y=\"-11.2252\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M47.82,-567.77C74.54,-596.64 146.56,-642.55 187.35,-657.31\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"186.41,-660.69 197,-660.37 188.52,-654.01 186.41,-660.69\"/>\n", + "<text text-anchor=\"middle\" x=\"112.58\" y=\"-615.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-197.584\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-193.984\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-185.91\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-182.81\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 0->4 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>0->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M120.591,-43.53C117.91,-75.3148 117.753,-134.803 120.121,-169.827\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"116.637,-170.17 120.937,-179.853 123.614,-169.602 116.637,-170.17\"/>\n", - "<text text-anchor=\"middle\" x=\"124.356\" y=\"-103.078\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>0->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M41.76,-524.97C46.01,-462.16 46.14,-284.01 42.14,-214.34\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"45.62,-213.87 41.47,-204.12 38.64,-214.33 45.62,-213.87\"/>\n", + "<text text-anchor=\"middle\" x=\"36.95\" y=\"-373.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M43.8066,-167.373C53.5625,-167.689 62,-166.582 62,-164.05 62,-162.468 58.7041,-161.442 53.8504,-160.973\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"53.889,-157.473 43.8066,-160.728 53.7184,-164.471 53.889,-157.473\"/>\n", - "<text text-anchor=\"middle\" x=\"65\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M238.1,-77.56C247.8,-77.83 256.1,-76.72 256.1,-74.23 256.1,-72.71 253.02,-71.7 248.41,-71.21\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"248.21,-67.7 238.1,-70.89 247.99,-74.7 248.21,-67.7\"/>\n", + "<text text-anchor=\"middle\" x=\"260.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M41.0101,-175.315C59.5881,-181.537 80,-177.782 80,-164.05 80,-152.786 66.2646,-148.235 51.0734,-150.398\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9319,-147.072 41.0101,-152.786 51.5481,-153.882 49.9319,-147.072\"/>\n", - "<text text-anchor=\"middle\" x=\"83\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M237.52,-79.99C255.47,-82.37 274.1,-80.45 274.1,-74.23 274.1,-69.17 261.8,-66.96 247.56,-67.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"247.18,-64.1 237.52,-68.47 247.79,-71.07 247.18,-64.1\"/>\n", + "<text text-anchor=\"middle\" x=\"278.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M43.9022,-161.786C74.8787,-154.532 131.29,-136.375 163.907,-123.307\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.325,-126.508 173.211,-119.433 162.634,-120.046 165.325,-126.508\"/>\n", - "<text text-anchor=\"middle\" x=\"101.905\" y=\"-130.946\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M220.05,-96.55C235.91,-150.06 286.43,-285.22 311.44,-341.47\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"308.32,-343.07 315.66,-350.71 314.69,-340.16 308.32,-343.07\"/>\n", + "<text text-anchor=\"middle\" x=\"260.74\" y=\"-222.41\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M27.5037,-142.611C28.9932,-125.572 29.1476,-101.616 27.9669,-83.1425\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"31.4394,-82.6663 27.1175,-72.9931 24.4638,-83.2502 31.4394,-82.6663\"/>\n", - "<text text-anchor=\"middle\" x=\"23.7353\" y=\"-109.277\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M212.82,-96.79C207.67,-188.02 207.57,-529.54 212.51,-630.63\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"209.02,-630.9 213.07,-640.69 216.01,-630.52 209.02,-630.9\"/>\n", + "<text text-anchor=\"middle\" x=\"207.67\" y=\"-367.11\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge48\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M33.0308,-183.436C48.9047,-195.313 77.9754,-205.311 99.3457,-206.64\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"99.4527,-210.139 109.417,-206.538 99.3821,-203.139 99.4527,-210.139\"/>\n", - "<text text-anchor=\"middle\" x=\"63.1882\" y=\"-199.438\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M193.06,-73.98C155.58,-85.58 83.32,-130.5 52.26,-160.9\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.6,-158.61 45.29,-168.29 54.7,-163.41 49.6,-158.61\"/>\n", + "<text text-anchor=\"middle\" x=\"117.66\" y=\"-107.84\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->0 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>2->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M182.88,-92.6802C174.883,-78.7452 161.048,-59.086 148.856,-44.0007\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"151.398,-41.5844 142.3,-36.1559 146.027,-46.0735 151.398,-41.5844\"/>\n", - "<text text-anchor=\"middle\" x=\"159.868\" y=\"-68.7404\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M308.06,-373.56C259.37,-399.12 120.53,-486.2 63.33,-526.62\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"61.28,-523.79 55.19,-532.46 65.36,-529.48 61.28,-523.79\"/>\n", + "<text text-anchor=\"middle\" x=\"180.7\" y=\"-440.49\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M170.738,-111.227C141.77,-117.598 85.0951,-135.637 50.6709,-149.114\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.1323,-145.961 41.1751,-152.956 51.7578,-152.45 49.1323,-145.961\"/>\n", - "<text text-anchor=\"middle\" x=\"108.704\" y=\"-118.571\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M321.9,-348C307.69,-298.33 257.11,-162.56 230.99,-102.93\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"234.14,-101.4 226.87,-93.71 227.75,-104.26 234.14,-101.4\"/>\n", + "<text text-anchor=\"middle\" x=\"271.44\" y=\"-228.86\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M176.122,-96.9607C149.146,-81.4643 86.5698,-60.5297 49.9421,-54.1554\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"50.3096,-50.6723 39.9131,-52.7126 49.3127,-57.601 50.3096,-50.6723\"/>\n", - "<text text-anchor=\"middle\" x=\"115.032\" y=\"-63.9581\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M312.77,-380.82C286.47,-426.45 232.53,-569.04 217.71,-630.47\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"214.29,-629.76 215.55,-640.28 221.12,-631.27 214.29,-629.76\"/>\n", + "<text text-anchor=\"middle\" x=\"261.24\" y=\"-509.04\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M171.037,-112.609C140.105,-109.29 77.1747,-89.4447 43.7956,-73.0724\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"45.3117,-69.9151 34.8339,-68.3447 42.0455,-76.1064 45.3117,-69.9151\"/>\n", - "<text text-anchor=\"middle\" x=\"105.416\" y=\"-97.2405\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M325.28,-385.51C315.1,-437.18 262.02,-580.09 232.81,-636.13\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"229.71,-634.49 227.99,-644.94 235.86,-637.85 229.71,-634.49\"/>\n", + "<text text-anchor=\"middle\" x=\"274.04\" y=\"-514.22\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M178.17,-124.685C168.213,-138.389 153.297,-158.919 141.829,-174.703\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"138.912,-172.764 135.866,-182.911 144.575,-176.878 138.912,-172.764\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-142.094\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M309.39,-356.63C261.87,-326.71 120.24,-237.51 62.85,-201.37\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"64.41,-198.22 54.08,-195.85 60.68,-204.14 64.41,-198.22\"/>\n", + "<text text-anchor=\"middle\" x=\"182.12\" y=\"-282.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M38.0051,-64.5088C56.4575,-66.2432 86.294,-57.9814 105.951,-46.7299\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"107.98,-49.5854 114.439,-41.1871 104.152,-43.7245 107.98,-49.5854\"/>\n", - "<text text-anchor=\"middle\" x=\"73.978\" y=\"-60.0194\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M208.8,-641.56C185.3,-613.84 113.28,-567.15 70.42,-550.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"71.57,-547.12 60.98,-547.09 69.24,-553.72 71.57,-547.12\"/>\n", + "<text text-anchor=\"middle\" x=\"135.61\" y=\"-586.39\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M40.1623,-55.0103C55.8865,-51.7108 78.8588,-44.6278 96.9732,-37.6947\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"98.4857,-40.859 106.46,-33.8833 95.8761,-34.3636 98.4857,-40.859\"/>\n", - "<text text-anchor=\"middle\" x=\"66.5678\" y=\"-34.7525\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M202.34,-645.88C173.97,-624.14 107.2,-581.69 68.12,-560.15\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.76,-557.06 59.29,-555.4 66.44,-563.22 69.76,-557.06\"/>\n", + "<text text-anchor=\"middle\" x=\"139.23\" y=\"-606.42\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M37.0012,-45.2813C51.6617,-38.7082 74.41,-30.9357 93.14,-25.8973\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"94.2105,-29.2372 103.055,-23.4045 92.5037,-22.4485 94.2105,-29.2372\"/>\n", - "<text text-anchor=\"middle\" x=\"63.0706\" y=\"-23.9893\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M198.07,-652.67C166.21,-636.47 99.08,-594.6 62.77,-568.66\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"64.81,-565.81 54.66,-562.75 60.68,-571.47 64.81,-565.81\"/>\n", + "<text text-anchor=\"middle\" x=\"125.42\" y=\"-614.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M16.8852,-72.9686C15.1641,-88.9428 14.8016,-112.98 15.7978,-132.35\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"12.3209,-132.81 16.491,-142.55 19.3048,-132.336 12.3209,-132.81\"/>\n", - "<text text-anchor=\"middle\" x=\"20.3415\" y=\"-99.0592\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M218.2,-640.52C223.51,-557.09 223.76,-214.77 218.95,-106.92\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"222.43,-106.47 218.44,-96.66 215.44,-106.82 222.43,-106.47\"/>\n", + "<text text-anchor=\"middle\" x=\"223.58\" y=\"-377.12\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->2 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>3->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M39.2419,-61.1358C68.2412,-70.5582 127,-89.6499 161.666,-100.914\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"161,-104.377 171.592,-104.139 163.163,-97.7199 161,-104.377\"/>\n", - "<text text-anchor=\"middle\" x=\"98.4541\" y=\"-85.4248\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M222.16,-641.57C240.59,-592.41 293.1,-452.33 315.22,-393.32\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"318.5,-394.52 318.74,-383.93 311.95,-392.07 318.5,-394.52\"/>\n", + "<text text-anchor=\"middle\" x=\"263.69\" y=\"-520.85\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->0 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>4->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M129.481,-179.782C132.374,-150.263 132.73,-90.7871 130.551,-53.8831\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"134.025,-53.3942 129.831,-43.6648 127.042,-53.886 134.025,-53.3942\"/>\n", - "<text text-anchor=\"middle\" x=\"126.016\" y=\"-113.232\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M35.11,-204.33C30.68,-262.18 30.38,-440.8 34.22,-514.74\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"30.74,-515.09 34.82,-524.87 37.73,-514.68 30.74,-515.09\"/>\n", + "<text text-anchor=\"middle\" x=\"29.67\" y=\"-349.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M117.533,-180.915C103.624,-168.666 74.6294,-157.812 52.1132,-155.361\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"52.1504,-151.859 41.9885,-154.856 51.8019,-158.85 52.1504,-151.859\"/>\n", - "<text text-anchor=\"middle\" x=\"87.823\" y=\"-156.538\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M56.97,-187.27C92.05,-178.08 165.04,-133.46 198.72,-102.05\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"201.41,-104.31 206.03,-94.78 196.47,-99.35 201.41,-104.31\"/>\n", + "<text text-anchor=\"middle\" x=\"123.85\" y=\"-148.06\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M110.204,-187.332C95.5439,-180.758 72.7956,-172.986 54.0656,-167.948\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"54.7019,-164.499 44.1503,-165.455 52.9951,-171.287 54.7019,-164.499\"/>\n", - "<text text-anchor=\"middle\" x=\"80.135\" y=\"-182.04\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M55.86,-179.59C87.72,-163.39 154.85,-121.52 191.16,-95.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"193.25,-98.39 199.26,-89.67 189.12,-92.73 193.25,-98.39\"/>\n", + "<text text-anchor=\"middle\" x=\"127.51\" y=\"-127.98\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M107.043,-197.061C91.3191,-193.761 68.3467,-186.678 50.2324,-179.745\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"51.3295,-176.414 40.7455,-175.934 48.7199,-182.909 51.3295,-176.414\"/>\n", - "<text text-anchor=\"middle\" x=\"80.6378\" y=\"-176.803\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M51.58,-172.79C79.95,-151.06 146.72,-108.61 185.81,-87.07\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"187.49,-90.14 194.64,-82.32 184.17,-83.98 187.49,-90.14\"/>\n", + "<text text-anchor=\"middle\" x=\"113.69\" y=\"-133.33\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node6\" class=\"node\"><title>5</title>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge50\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M260.938,-109.792C247.476,-109.792 231.204,-109.792 217.542,-109.792\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"217.249,-106.292 207.249,-109.792 217.249,-113.292 217.249,-106.292\"/>\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M466.87,-366.61C436.03,-366.61 385.87,-366.61 354.26,-366.61\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"353.92,-363.11 343.92,-366.61 353.92,-370.11 353.92,-363.11\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -804,7 +881,7 @@ "<Dot visualization: custom_graph []>" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -815,7 +892,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -824,7 +901,7 @@ "Executed operation: Markiere(z2,z0,0)" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -835,7 +912,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -844,204 +921,237 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"323pt\" height=\"224pt\"\n", - " viewBox=\"0.00 0.00 322.99 223.58\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 219.584)\">\n", + "<svg width=\"540pt\" height=\"717pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.37\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.99 0.99) rotate(0) translate(4 724)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-219.584 319.99,-219.584 319.99,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724 544,-724 544,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"125.206\" cy=\"-22\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.3\" cy=\"-547.31\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M147.012,-25.3223C156.768,-25.6387 165.206,-24.5312 165.206,-22 165.206,-20.418 161.91,-19.3921 157.056,-18.9225\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"157.095,-15.4225 147.012,-18.6777 156.924,-22.4204 157.095,-15.4225\"/>\n", - "<text text-anchor=\"middle\" x=\"168.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M60.77,-550.64C70.46,-550.92 78.76,-549.8 78.76,-547.31 78.76,-545.79 75.68,-544.78 71.08,-544.29\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.87,-540.78 60.77,-543.97 70.66,-547.78 70.87,-540.78\"/>\n", + "<text text-anchor=\"middle\" x=\"82.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M144.216,-33.2646C162.794,-39.4869 183.206,-35.732 183.206,-22 183.206,-10.7354 169.47,-6.18466 154.279,-8.34764\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"153.137,-5.02123 144.216,-10.7354 154.754,-11.8321 153.137,-5.02123\"/>\n", - "<text text-anchor=\"middle\" x=\"186.206\" y=\"-18.4\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M60.19,-553.07C78.13,-555.45 96.76,-553.53 96.76,-547.31 96.76,-542.25 84.46,-540.04 70.23,-540.66\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.84,-537.18 60.19,-541.55 70.46,-544.15 69.84,-537.18\"/>\n", + "<text text-anchor=\"middle\" x=\"100.76\" y=\"-544.21\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188.99\" cy=\"-109.792\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188.99\" y=\"-106.192\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"325.23\" cy=\"-366.61\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"325.23\" y=\"-363.51\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 0->2 -->\n", - "<g id=\"edge42\" class=\"edge\"><title>0->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M133.355,-42.5799C142.165,-57.2404 156.121,-76.712 167.935,-90.9631\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.405,-93.3892 174.588,-98.6748 170.706,-88.8167 165.405,-93.3892\"/>\n", - "<text text-anchor=\"middle\" x=\"156.645\" y=\"-59.1715\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge21\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M59.02,-538.46C111.52,-510.26 249.15,-423.75 303.12,-385.22\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"305.3,-387.96 311.32,-379.25 301.18,-382.3 305.3,-387.96\"/>\n", + "<text text-anchor=\"middle\" x=\"176.07\" y=\"-465.24\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-55.5335\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-51.9335\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-658.99\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-655.89\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 0->3 -->\n", - "<g id=\"edge44\" class=\"edge\"><title>0->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M104.887,-12.8005C85.1541,-12.5236 55.9365,-21.4392 37.8464,-32.8499\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"35.4732,-30.2516 29.51,-39.0089 39.6328,-35.8817 35.4732,-30.2516\"/>\n", - "<text text-anchor=\"middle\" x=\"69.3667\" y=\"-11.2252\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge22\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M47.82,-567.77C74.54,-596.64 146.56,-642.55 187.35,-657.31\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"186.41,-660.69 197,-660.37 188.52,-654.01 186.41,-660.69\"/>\n", + "<text text-anchor=\"middle\" x=\"112.58\" y=\"-615.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-197.584\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-193.984\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-185.91\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-182.81\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 0->4 -->\n", - "<g id=\"edge46\" class=\"edge\"><title>0->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M120.591,-43.53C117.91,-75.3148 117.753,-134.803 120.121,-169.827\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"116.637,-170.17 120.937,-179.853 123.614,-169.602 116.637,-170.17\"/>\n", - "<text text-anchor=\"middle\" x=\"124.356\" y=\"-103.078\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge23\" class=\"edge\">\n", + "<title>0->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M41.76,-524.97C46.01,-462.16 46.14,-284.01 42.14,-214.34\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"45.62,-213.87 41.47,-204.12 38.64,-214.33 45.62,-213.87\"/>\n", + "<text text-anchor=\"middle\" x=\"36.95\" y=\"-373.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"22\" cy=\"-164.05\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"215.63\" cy=\"-74.23\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M43.8066,-167.373C53.5625,-167.689 62,-166.582 62,-164.05 62,-162.468 58.7041,-161.442 53.8504,-160.973\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"53.889,-157.473 43.8066,-160.728 53.7184,-164.471 53.889,-157.473\"/>\n", - "<text text-anchor=\"middle\" x=\"65\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M238.1,-77.56C247.8,-77.83 256.1,-76.72 256.1,-74.23 256.1,-72.71 253.02,-71.7 248.41,-71.21\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"248.21,-67.7 238.1,-70.89 247.99,-74.7 248.21,-67.7\"/>\n", + "<text text-anchor=\"middle\" x=\"260.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M41.0101,-175.315C59.5881,-181.537 80,-177.782 80,-164.05 80,-152.786 66.2646,-148.235 51.0734,-150.398\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9319,-147.072 41.0101,-152.786 51.5481,-153.882 49.9319,-147.072\"/>\n", - "<text text-anchor=\"middle\" x=\"83\" y=\"-160.45\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M237.52,-79.99C255.47,-82.37 274.1,-80.45 274.1,-74.23 274.1,-69.17 261.8,-66.96 247.56,-67.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"247.18,-64.1 237.52,-68.47 247.79,-71.07 247.18,-64.1\"/>\n", + "<text text-anchor=\"middle\" x=\"278.1\" y=\"-71.13\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1->2 -->\n", - "<g id=\"edge48\" class=\"edge\"><title>1->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M43.9022,-161.786C74.8787,-154.532 131.29,-136.375 163.907,-123.307\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"165.325,-126.508 173.211,-119.433 162.634,-120.046 165.325,-126.508\"/>\n", - "<text text-anchor=\"middle\" x=\"101.905\" y=\"-130.946\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge24\" class=\"edge\">\n", + "<title>1->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M220.05,-96.55C235.91,-150.06 286.43,-285.22 311.44,-341.47\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"308.32,-343.07 315.66,-350.71 314.69,-340.16 308.32,-343.07\"/>\n", + "<text text-anchor=\"middle\" x=\"260.74\" y=\"-222.41\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->3 -->\n", - "<g id=\"edge50\" class=\"edge\"><title>1->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M27.5037,-142.611C28.9932,-125.572 29.1476,-101.616 27.9669,-83.1425\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"31.4394,-82.6663 27.1175,-72.9931 24.4638,-83.2502 31.4394,-82.6663\"/>\n", - "<text text-anchor=\"middle\" x=\"23.7353\" y=\"-109.277\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge25\" class=\"edge\">\n", + "<title>1->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M212.82,-96.79C207.67,-188.02 207.57,-529.54 212.51,-630.63\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"209.02,-630.9 213.07,-640.69 216.01,-630.52 209.02,-630.9\"/>\n", + "<text text-anchor=\"middle\" x=\"207.67\" y=\"-367.11\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 1->4 -->\n", - "<g id=\"edge52\" class=\"edge\"><title>1->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M33.0308,-183.436C48.9047,-195.313 77.9754,-205.311 99.3457,-206.64\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"99.4527,-210.139 109.417,-206.538 99.3821,-203.139 99.4527,-210.139\"/>\n", - "<text text-anchor=\"middle\" x=\"63.1882\" y=\"-199.438\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge26\" class=\"edge\">\n", + "<title>1->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M193.06,-73.98C155.58,-85.58 83.32,-130.5 52.26,-160.9\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.6,-158.61 45.29,-168.29 54.7,-163.41 49.6,-158.61\"/>\n", + "<text text-anchor=\"middle\" x=\"117.66\" y=\"-107.84\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->0 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>2->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M182.88,-92.6802C174.883,-78.7452 161.048,-59.086 148.856,-44.0007\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"151.398,-41.5844 142.3,-36.1559 146.027,-46.0735 151.398,-41.5844\"/>\n", - "<text text-anchor=\"middle\" x=\"159.868\" y=\"-68.7404\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>2->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M308.06,-373.56C259.37,-399.12 120.53,-486.2 63.33,-526.62\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"61.28,-523.79 55.19,-532.46 65.36,-529.48 61.28,-523.79\"/>\n", + "<text text-anchor=\"middle\" x=\"180.7\" y=\"-440.49\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->1 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>2->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M170.738,-111.227C141.77,-117.598 85.0951,-135.637 50.6709,-149.114\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"49.1323,-145.961 41.1751,-152.956 51.7578,-152.45 49.1323,-145.961\"/>\n", - "<text text-anchor=\"middle\" x=\"108.704\" y=\"-118.571\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M321.9,-348C307.69,-298.33 257.11,-162.56 230.99,-102.93\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"234.14,-101.4 226.87,-93.71 227.75,-104.26 234.14,-101.4\"/>\n", + "<text text-anchor=\"middle\" x=\"271.44\" y=\"-228.86\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M176.122,-96.9607C149.146,-81.4643 86.5698,-60.5297 49.9421,-54.1554\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"50.3096,-50.6723 39.9131,-52.7126 49.3127,-57.601 50.3096,-50.6723\"/>\n", - "<text text-anchor=\"middle\" x=\"115.032\" y=\"-63.9581\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M312.77,-380.82C286.47,-426.45 232.53,-569.04 217.71,-630.47\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"214.29,-629.76 215.55,-640.28 221.12,-631.27 214.29,-629.76\"/>\n", + "<text text-anchor=\"middle\" x=\"261.24\" y=\"-509.04\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M171.037,-112.609C140.105,-109.29 77.1747,-89.4447 43.7956,-73.0724\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"45.3117,-69.9151 34.8339,-68.3447 42.0455,-76.1064 45.3117,-69.9151\"/>\n", - "<text text-anchor=\"middle\" x=\"105.416\" y=\"-97.2405\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M325.28,-385.51C315.1,-437.18 262.02,-580.09 232.81,-636.13\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"229.71,-634.49 227.99,-644.94 235.86,-637.85 229.71,-634.49\"/>\n", + "<text text-anchor=\"middle\" x=\"274.04\" y=\"-514.22\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M171.922,-116.609C158.119,-128.418 140.53,-151.598 130.662,-170.31\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"127.378,-169.068 126.266,-179.605 133.706,-172.061 127.378,-169.068\"/>\n", - "<text text-anchor=\"middle\" x=\"157.292\" y=\"-144.86\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M313.64,-351.69C271.43,-314.57 127.34,-223.28 66.03,-194.11\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"67.15,-190.78 56.59,-189.84 64.26,-197.15 67.15,-190.78\"/>\n", + "<text text-anchor=\"middle\" x=\"185.84\" y=\"-263.3\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M187.781,-128.131C180.815,-144.908 164.205,-168.799 149.458,-183.966\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"146.852,-181.613 141.977,-191.019 151.654,-186.706 146.852,-181.613\"/>\n", - "<text text-anchor=\"middle\" x=\"174.619\" y=\"-156.449\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M306.77,-362.6C255.05,-340.57 110.47,-250.06 57.68,-207.37\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"59.66,-204.46 49.75,-200.71 55.15,-209.82 59.66,-204.46\"/>\n", + "<text text-anchor=\"middle\" x=\"177.23\" y=\"-288.39\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M38.0051,-64.5088C56.4575,-66.2432 86.294,-57.9814 105.951,-46.7299\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"107.98,-49.5854 114.439,-41.1871 104.152,-43.7245 107.98,-49.5854\"/>\n", - "<text text-anchor=\"middle\" x=\"73.978\" y=\"-60.0194\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M208.8,-641.56C185.3,-613.84 113.28,-567.15 70.42,-550.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"71.57,-547.12 60.98,-547.09 69.24,-553.72 71.57,-547.12\"/>\n", + "<text text-anchor=\"middle\" x=\"135.61\" y=\"-586.39\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge32\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M40.1623,-55.0103C55.8865,-51.7108 78.8588,-44.6278 96.9732,-37.6947\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"98.4857,-40.859 106.46,-33.8833 95.8761,-34.3636 98.4857,-40.859\"/>\n", - "<text text-anchor=\"middle\" x=\"66.5678\" y=\"-34.7525\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M202.34,-645.88C173.97,-624.14 107.2,-581.69 68.12,-560.15\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.76,-557.06 59.29,-555.4 66.44,-563.22 69.76,-557.06\"/>\n", + "<text text-anchor=\"middle\" x=\"139.23\" y=\"-606.42\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M37.0012,-45.2813C51.6617,-38.7082 74.41,-30.9357 93.14,-25.8973\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"94.2105,-29.2372 103.055,-23.4045 92.5037,-22.4485 94.2105,-29.2372\"/>\n", - "<text text-anchor=\"middle\" x=\"63.0706\" y=\"-23.9893\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge16\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M198.07,-652.67C166.21,-636.47 99.08,-594.6 62.77,-568.66\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"64.81,-565.81 54.66,-562.75 60.68,-571.47 64.81,-565.81\"/>\n", + "<text text-anchor=\"middle\" x=\"125.42\" y=\"-614.06\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->1 -->\n", - "<g id=\"edge34\" class=\"edge\"><title>3->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M16.8852,-72.9686C15.1641,-88.9428 14.8016,-112.98 15.7978,-132.35\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"12.3209,-132.81 16.491,-142.55 19.3048,-132.336 12.3209,-132.81\"/>\n", - "<text text-anchor=\"middle\" x=\"20.3415\" y=\"-99.0592\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge17\" class=\"edge\">\n", + "<title>3->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M218.2,-640.52C223.51,-557.09 223.76,-214.77 218.95,-106.92\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"222.43,-106.47 218.44,-96.66 215.44,-106.82 222.43,-106.47\"/>\n", + "<text text-anchor=\"middle\" x=\"223.58\" y=\"-377.12\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 3->2 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>3->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M39.2419,-61.1358C68.2412,-70.5582 127,-89.6499 161.666,-100.914\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"161,-104.377 171.592,-104.139 163.163,-97.7199 161,-104.377\"/>\n", - "<text text-anchor=\"middle\" x=\"98.4541\" y=\"-85.4248\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>3->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M222.16,-641.57C240.59,-592.41 293.1,-452.33 315.22,-393.32\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"318.5,-394.52 318.74,-383.93 311.95,-392.07 318.5,-394.52\"/>\n", + "<text text-anchor=\"middle\" x=\"263.69\" y=\"-520.85\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->0 -->\n", - "<g id=\"edge38\" class=\"edge\"><title>4->0</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M129.481,-179.782C132.374,-150.263 132.73,-90.7871 130.551,-53.8831\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"134.025,-53.3942 129.831,-43.6648 127.042,-53.886 134.025,-53.3942\"/>\n", - "<text text-anchor=\"middle\" x=\"126.016\" y=\"-113.232\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge19\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M35.11,-204.33C30.68,-262.18 30.38,-440.8 34.22,-514.74\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"30.74,-515.09 34.82,-524.87 37.73,-514.68 30.74,-515.09\"/>\n", + "<text text-anchor=\"middle\" x=\"29.67\" y=\"-349.94\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge40\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M117.533,-180.915C103.624,-168.666 74.6294,-157.812 52.1132,-155.361\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"52.1504,-151.859 41.9885,-154.856 51.8019,-158.85 52.1504,-151.859\"/>\n", - "<text text-anchor=\"middle\" x=\"87.823\" y=\"-156.538\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M56.97,-187.27C92.05,-178.08 165.04,-133.46 198.72,-102.05\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"201.41,-104.31 206.03,-94.78 196.47,-99.35 201.41,-104.31\"/>\n", + "<text text-anchor=\"middle\" x=\"123.85\" y=\"-148.06\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M110.204,-187.332C95.5439,-180.758 72.7956,-172.986 54.0656,-167.948\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"54.7019,-164.499 44.1503,-165.455 52.9951,-171.287 54.7019,-164.499\"/>\n", - "<text text-anchor=\"middle\" x=\"80.135\" y=\"-182.04\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M55.86,-179.59C87.72,-163.39 154.85,-121.52 191.16,-95.58\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"193.25,-98.39 199.26,-89.67 189.12,-92.73 193.25,-98.39\"/>\n", + "<text text-anchor=\"middle\" x=\"127.51\" y=\"-127.98\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M107.043,-197.061C91.3191,-193.761 68.3467,-186.678 50.2324,-179.745\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"51.3295,-176.414 40.7455,-175.934 48.7199,-182.909 51.3295,-176.414\"/>\n", - "<text text-anchor=\"middle\" x=\"80.6378\" y=\"-176.803\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge20\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M51.58,-172.79C79.95,-151.06 146.72,-108.61 185.81,-87.07\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"187.49,-90.14 194.64,-82.32 184.17,-83.98 187.49,-90.14\"/>\n", + "<text text-anchor=\"middle\" x=\"113.69\" y=\"-133.33\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 4->2 -->\n", - "<g id=\"edge36\" class=\"edge\"><title>4->2</title>\n", - "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M136.026,-182.691C145.982,-168.987 160.898,-148.457 172.367,-132.672\"/>\n", - "<polygon fill=\"gray\" stroke=\"gray\" points=\"175.283,-134.612 178.33,-124.465 169.62,-130.498 175.283,-134.612\"/>\n", - "<text text-anchor=\"middle\" x=\"160.196\" y=\"-158.082\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", + "<g id=\"edge18\" class=\"edge\">\n", + "<title>4->2</title>\n", + "<path fill=\"none\" stroke=\"gray\" stroke-dasharray=\"1,5\" d=\"M54.13,-195.88C101.65,-225.81 243.28,-315 300.67,-351.14\"/>\n", + "<polygon fill=\"gray\" stroke=\"gray\" points=\"299.12,-354.3 309.44,-356.67 302.85,-348.38 299.12,-354.3\"/>\n", + "<text text-anchor=\"middle\" x=\"172.4\" y=\"-263.91\" font-family=\"Times,serif\" font-size=\"12.00\">×</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node6\" class=\"node\"><title>5</title>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge54\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M260.938,-109.792C247.476,-109.792 231.204,-109.792 217.542,-109.792\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"217.249,-106.292 207.249,-109.792 217.249,-113.292 217.249,-106.292\"/>\n", + "<g id=\"edge27\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M466.87,-366.61C436.03,-366.61 385.87,-366.61 354.26,-366.61\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"353.92,-363.11 343.92,-366.61 353.92,-370.11 353.92,-363.11\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -1050,7 +1160,7 @@ "<Dot visualization: custom_graph []>" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -1068,7 +1178,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -1077,7 +1187,7 @@ "Executed operation: Fertig()" ] }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -1088,7 +1198,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -1097,132 +1207,153 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: prob_graph Pages: 1 -->\n", - "<svg width=\"323pt\" height=\"220pt\"\n", - " viewBox=\"0.00 0.00 322.99 219.58\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 215.584)\">\n", + "<svg width=\"540pt\" height=\"717pt\"\n", + " viewBox=\"0.00 0.00 540.00 717.37\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.99 0.99) rotate(0) translate(4 724)\">\n", "<title>prob_graph</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-215.584 319.99,-215.584 319.99,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-724 544,-724 544,4 -4,4\"/>\n", "<!-- 0 -->\n", - "<g id=\"node1\" class=\"node\"><title>0</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-51.5335\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"22\" cy=\"-51.5335\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-47.9335\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-175.92\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.3\" cy=\"-175.92\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-172.82\" font-family=\"Times,serif\" font-size=\"12.00\">z3</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge8\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M43.8066,-54.8558C53.5625,-55.1722 62,-54.0648 62,-51.5335 62,-49.9515 58.7041,-48.9256 53.8504,-48.456\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"53.889,-44.956 43.8066,-48.2113 53.7184,-51.9539 53.889,-44.956\"/>\n", - "<text text-anchor=\"middle\" x=\"65\" y=\"-47.9335\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M60.77,-179.26C70.46,-179.53 78.76,-178.42 78.76,-175.92 78.76,-174.4 75.68,-173.39 71.08,-172.9\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.87,-169.39 60.77,-172.59 70.66,-176.39 70.87,-169.39\"/>\n", + "<text text-anchor=\"middle\" x=\"82.76\" y=\"-172.82\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 0->0 -->\n", - "<g id=\"edge18\" class=\"edge\"><title>0->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M41.0101,-62.7981C59.5881,-69.0204 80,-65.2656 80,-51.5335 80,-40.269 66.2646,-35.7182 51.0734,-37.8812\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9319,-34.5548 41.0101,-40.269 51.5481,-41.3656 49.9319,-34.5548\"/>\n", - "<text text-anchor=\"middle\" x=\"83\" y=\"-47.9335\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge9\" class=\"edge\">\n", + "<title>0->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M60.19,-181.68C78.13,-184.06 96.76,-182.14 96.76,-175.92 96.76,-170.86 84.46,-168.65 70.23,-169.27\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.84,-165.79 60.19,-170.16 70.46,-172.77 69.84,-165.79\"/>\n", + "<text text-anchor=\"middle\" x=\"100.76\" y=\"-172.82\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 1 -->\n", - "<g id=\"node2\" class=\"node\"><title>1</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"22\" cy=\"-160.05\" rx=\"18\" ry=\"18\"/>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"22\" cy=\"-160.05\" rx=\"22\" ry=\"22\"/>\n", - "<text text-anchor=\"middle\" x=\"22\" y=\"-156.45\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"38.3\" cy=\"-544.08\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.3\" cy=\"-544.08\" rx=\"22.44\" ry=\"22.44\"/>\n", + "<text text-anchor=\"middle\" x=\"38.3\" y=\"-540.98\" font-family=\"Times,serif\" font-size=\"12.00\">z4</text>\n", "</g>\n", "<!-- 0->1 -->\n", - "<g id=\"edge26\" class=\"edge\"><title>0->1</title>\n", - "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M16.4963,-72.9729C15.1061,-88.8762 14.879,-110.805 15.8148,-128.677\"/>\n", - "<polygon fill=\"purple\" stroke=\"purple\" points=\"12.323,-128.919 16.5002,-138.655 19.3066,-128.439 12.323,-128.919\"/>\n", - "<text text-anchor=\"middle\" x=\"11.1555\" y=\"-97.2251\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", + "<g id=\"edge13\" class=\"edge\">\n", + "<title>0->1</title>\n", + "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M34.85,-198.4C30.66,-261.04 30.46,-437.82 34.25,-511.36\"/>\n", + "<polygon fill=\"purple\" stroke=\"purple\" stroke-width=\"2\" points=\"30.76,-511.65 34.84,-521.43 37.75,-511.24 30.76,-511.65\"/>\n", + "<text text-anchor=\"middle\" x=\"29.55\" y=\"-358.28\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", "</g>\n", "<!-- 1->0 -->\n", - "<g id=\"edge28\" class=\"edge\"><title>1->0</title>\n", - "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M27.5037,-138.611C28.8939,-122.708 29.121,-100.779 28.1852,-82.9065\"/>\n", - "<polygon fill=\"purple\" stroke=\"purple\" points=\"31.677,-82.665 27.4998,-72.9284 24.6934,-83.1448 31.677,-82.665\"/>\n", - "<text text-anchor=\"middle\" x=\"22.8445\" y=\"-107.159\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", + "<g id=\"edge14\" class=\"edge\">\n", + "<title>1->0</title>\n", + "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M41.75,-521.6C45.94,-458.96 46.14,-282.18 42.35,-208.64\"/>\n", + "<polygon fill=\"purple\" stroke=\"purple\" stroke-width=\"2\" points=\"45.84,-208.35 41.76,-198.57 38.85,-208.76 45.84,-208.35\"/>\n", + "<text text-anchor=\"middle\" x=\"47.05\" y=\"-368.52\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge10\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M43.8066,-163.373C53.5625,-163.689 62,-162.582 62,-160.05 62,-158.468 58.7041,-157.442 53.8504,-156.973\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"53.889,-153.473 43.8066,-156.728 53.7184,-160.471 53.889,-153.473\"/>\n", - "<text text-anchor=\"middle\" x=\"65\" y=\"-156.45\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M60.77,-547.41C70.46,-547.69 78.76,-546.58 78.76,-544.08 78.76,-542.56 75.68,-541.55 71.08,-541.06\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"70.87,-537.55 60.77,-540.74 70.66,-544.55 70.87,-537.55\"/>\n", + "<text text-anchor=\"middle\" x=\"82.76\" y=\"-540.98\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 1->1 -->\n", - "<g id=\"edge20\" class=\"edge\"><title>1->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M41.0101,-171.315C59.5881,-177.537 80,-173.782 80,-160.05 80,-148.786 66.2646,-144.235 51.0734,-146.398\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"49.9319,-143.072 41.0101,-148.786 51.5481,-149.882 49.9319,-143.072\"/>\n", - "<text text-anchor=\"middle\" x=\"83\" y=\"-156.45\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge10\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M60.19,-549.84C78.13,-552.22 96.76,-550.3 96.76,-544.08 96.76,-539.02 84.46,-536.81 70.23,-537.43\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"69.84,-533.95 60.19,-538.32 70.46,-540.93 69.84,-533.95\"/>\n", + "<text text-anchor=\"middle\" x=\"100.76\" y=\"-540.98\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 2 -->\n", - "<g id=\"node3\" class=\"node\"><title>2</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"188.99\" cy=\"-105.792\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"188.99\" y=\"-102.192\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"325.23\" cy=\"-360\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"325.23\" y=\"-356.9\" font-family=\"Times,serif\" font-size=\"12.00\">z0</text>\n", "</g>\n", "<!-- 3 -->\n", - "<g id=\"node4\" class=\"node\"><title>3</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-18\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-14.4\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-62.15\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-59.05\" font-family=\"Times,serif\" font-size=\"12.00\">z1</text>\n", "</g>\n", "<!-- 2->3 -->\n", - "<g id=\"edge12\" class=\"edge\"><title>2->3</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M178.17,-90.8992C168.213,-77.1953 153.297,-56.6651 141.829,-40.8804\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"144.575,-38.7057 135.866,-32.6728 138.912,-42.8202 144.575,-38.7057\"/>\n", - "<text text-anchor=\"middle\" x=\"166\" y=\"-58.2898\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M318.7,-342.26C300.28,-292.18 247.76,-149.47 225.65,-89.37\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"228.86,-87.98 222.12,-79.8 222.29,-90.39 228.86,-87.98\"/>\n", + "<text text-anchor=\"middle\" x=\"268.17\" y=\"-219.21\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4 -->\n", - "<g id=\"node5\" class=\"node\"><title>4</title>\n", - "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"125.206\" cy=\"-193.584\" rx=\"18\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"125.206\" y=\"-189.984\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"215.63\" cy=\"-657.85\" rx=\"18.44\" ry=\"18.44\"/>\n", + "<text text-anchor=\"middle\" x=\"215.63\" y=\"-654.75\" font-family=\"Times,serif\" font-size=\"12.00\">z2</text>\n", "</g>\n", "<!-- 2->4 -->\n", - "<g id=\"edge2\" class=\"edge\"><title>2->4</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M178.17,-120.685C168.213,-134.389 153.297,-154.919 141.829,-170.703\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"138.912,-168.764 135.866,-178.911 144.575,-172.878 138.912,-168.764\"/>\n", - "<text text-anchor=\"middle\" x=\"154\" y=\"-138.094\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>2->4</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M318.7,-377.74C300.28,-427.82 247.76,-570.53 225.65,-630.63\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"222.29,-629.61 222.12,-640.2 228.86,-632.02 222.29,-629.61\"/>\n", + "<text text-anchor=\"middle\" x=\"268.17\" y=\"-507.59\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge4\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M107.043,-18.5233C91.3191,-21.8227 68.3467,-28.9058 50.2324,-35.8389\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"48.7199,-32.6745 40.7455,-39.6502 51.3295,-39.17 48.7199,-32.6745\"/>\n", - "<text text-anchor=\"middle\" x=\"80.6378\" y=\"-31.5811\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M198.04,-68.67C166.16,-85.24 99.03,-127.9 62.73,-154.27\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"60.58,-151.51 54.63,-160.28 64.75,-157.14 60.58,-151.51\"/>\n", + "<text text-anchor=\"middle\" x=\"126.38\" y=\"-114.87\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 3->0 -->\n", - "<g id=\"edge14\" class=\"edge\"><title>3->0</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M110.204,-28.2522C95.5439,-34.8253 72.7956,-42.5978 54.0656,-47.6362\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"52.9951,-44.2963 44.1503,-50.129 54.7019,-51.0851 52.9951,-44.2963\"/>\n", - "<text text-anchor=\"middle\" x=\"80.135\" y=\"-26.3442\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->0</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M202.37,-75.43C174.03,-97.5 107.26,-140.74 68.16,-162.73\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"66.4,-159.71 59.32,-167.59 69.77,-165.84 66.4,-159.71\"/>\n", + "<text text-anchor=\"middle\" x=\"139.26\" y=\"-122.48\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 3->4 -->\n", - "<g id=\"edge22\" class=\"edge\"><title>3->4</title>\n", - "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M120.93,-35.8022C117.934,-66.3794 117.659,-129.101 120.105,-165.581\"/>\n", - "<polygon fill=\"purple\" stroke=\"purple\" points=\"116.652,-166.312 120.951,-175.996 123.629,-165.745 116.652,-166.312\"/>\n", - "<text text-anchor=\"middle\" x=\"125.517\" y=\"-97.0916\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", + "<g id=\"edge11\" class=\"edge\">\n", + "<title>3->4</title>\n", + "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M213.08,-80.63C207.67,-166.27 207.49,-524.74 212.52,-629.18\"/>\n", + "<polygon fill=\"purple\" stroke=\"purple\" stroke-width=\"2\" points=\"209.04,-629.49 213.08,-639.29 216.03,-629.11 209.04,-629.49\"/>\n", + "<text text-anchor=\"middle\" x=\"207.8\" y=\"-358.31\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge6\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"green\" d=\"M110.204,-183.332C95.5439,-176.758 72.7956,-168.986 54.0656,-163.948\"/>\n", - "<polygon fill=\"green\" stroke=\"green\" points=\"54.7019,-160.499 44.1503,-161.455 52.9951,-167.287 54.7019,-160.499\"/>\n", - "<text text-anchor=\"middle\" x=\"80.135\" y=\"-178.04\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M202.37,-644.57C174.03,-622.5 107.26,-579.26 68.16,-557.27\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"69.77,-554.16 59.32,-552.41 66.4,-560.29 69.77,-554.16\"/>\n", + "<text text-anchor=\"middle\" x=\"131.26\" y=\"-591.32\" font-family=\"Times,serif\" font-size=\"12.00\">1</text>\n", "</g>\n", "<!-- 4->1 -->\n", - "<g id=\"edge16\" class=\"edge\"><title>4->1</title>\n", - "<path fill=\"none\" stroke=\"red\" d=\"M107.043,-193.061C91.3191,-189.761 68.3467,-182.678 50.2324,-175.745\"/>\n", - "<polygon fill=\"red\" stroke=\"red\" points=\"51.3295,-172.414 40.7455,-171.934 48.7199,-178.909 51.3295,-172.414\"/>\n", - "<text text-anchor=\"middle\" x=\"80.6378\" y=\"-172.803\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", + "<g id=\"edge8\" class=\"edge\">\n", + "<title>4->1</title>\n", + "<path fill=\"none\" stroke=\"red\" d=\"M198.04,-651.33C166.16,-634.76 99.03,-592.1 62.73,-565.73\"/>\n", + "<polygon fill=\"red\" stroke=\"red\" points=\"64.75,-562.86 54.63,-559.72 60.58,-568.49 64.75,-562.86\"/>\n", + "<text text-anchor=\"middle\" x=\"126.38\" y=\"-611.93\" font-family=\"Times,serif\" font-size=\"12.00\">0</text>\n", "</g>\n", "<!-- 4->3 -->\n", - "<g id=\"edge24\" class=\"edge\"><title>4->3</title>\n", - "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M129.481,-175.782C132.477,-145.204 132.753,-82.4832 130.307,-46.0027\"/>\n", - "<polygon fill=\"purple\" stroke=\"purple\" points=\"133.759,-45.2718 129.46,-35.5882 126.782,-45.839 133.759,-45.2718\"/>\n", - "<text text-anchor=\"middle\" x=\"124.894\" y=\"-107.292\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", + "<g id=\"edge12\" class=\"edge\">\n", + "<title>4->3</title>\n", + "<path fill=\"none\" stroke=\"purple\" stroke-width=\"2\" d=\"M218.18,-639.37C223.59,-553.73 223.78,-195.26 218.74,-90.82\"/>\n", + "<polygon fill=\"purple\" stroke=\"purple\" stroke-width=\"2\" points=\"222.23,-90.51 218.18,-80.71 215.24,-90.89 222.23,-90.51\"/>\n", + "<text text-anchor=\"middle\" x=\"223.46\" y=\"-368.49\" font-family=\"Times,serif\" font-size=\"12.00\">↔</text>\n", "</g>\n", "<!-- 5 -->\n", - "<g id=\"node6\" class=\"node\"><title>5</title>\n", + "<g id=\"node6\" class=\"node\">\n", + "<title>5</title>\n", "</g>\n", "<!-- 5->2 -->\n", - "<g id=\"edge30\" class=\"edge\"><title>5->2</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M260.938,-105.792C247.476,-105.792 231.204,-105.792 217.542,-105.792\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"217.249,-102.292 207.249,-105.792 217.249,-109.292 217.249,-102.292\"/>\n", + "<g id=\"edge15\" class=\"edge\">\n", + "<title>5->2</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M466.87,-360C436.03,-360 385.87,-360 354.26,-360\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"353.92,-356.5 343.92,-360 353.92,-363.5 353.92,-356.5\"/>\n", "</g>\n", "</g>\n", "</svg>" @@ -1231,7 +1362,7 @@ "<Dot visualization: custom_graph []>" ] }, - "execution_count": 14, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -1286,9 +1417,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\{\\{\\mathit{z0}\\},\\{\\mathit{z1},\\mathit{z2}\\},\\{\\mathit{z3},\\mathit{z4}\\}\\}$" + ], + "text/plain": [ + "{{z0},{z1,z2},{z3,z4}}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ ":let ZF {zs| #x.(x:Z & closure(fusioniert)[{x}] = zs)}" ] @@ -1302,7 +1447,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -1314,7 +1459,7 @@ "{({z0}↦0↦{z1,z2}),({z0}↦1↦{z1,z2}),({z1,z2}↦0↦{z3,z4}),({z1,z2}↦1↦{z3,z4}),({z3,z4}↦0↦{z3,z4}),({z3,z4}↦1↦{z3,z4})}" ] }, - "execution_count": 32, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1325,7 +1470,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -1335,7 +1480,7 @@ "Preference changed: DOT_ENGINE = dot\n" ] }, - "execution_count": 33, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1346,7 +1491,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -1355,64 +1500,73 @@ "<?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.28.0 (20110509.1545)\n", + "<!-- Generated by graphviz version 2.44.1 (0)\n", " -->\n", "<!-- Title: state Pages: 1 -->\n", - "<svg width=\"270pt\" height=\"116pt\"\n", - " viewBox=\"0.00 0.00 270.00 116.02\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph1\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112.016)\">\n", + "<svg width=\"136pt\" height=\"218pt\"\n", + " viewBox=\"0.00 0.00 136.00 218.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 214)\">\n", "<title>state</title>\n", - "<polygon fill=\"white\" stroke=\"white\" points=\"-4,5 -4,-112.016 267,-112.016 267,5 -4,5\"/>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-214 132,-214 132,4 -4,4\"/>\n", "<!-- \\{z3,z4\\} -->\n", - "<g id=\"node1\" class=\"node\"><title>\\{z3,z4\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"261.868,-40.0157 202.132,-40.0157 202.132,-4.01569 261.868,-4.01569 261.868,-40.0157\"/>\n", - "<text text-anchor=\"middle\" x=\"232\" y=\"-17.8157\" font-family=\"Times,serif\" font-size=\"14.00\">{z3,z4}</text>\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>\\{z3,z4\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"72,-36 0,-36 0,0 72,0 72,-36\"/>\n", + "<text text-anchor=\"middle\" x=\"36\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">{z3,z4}</text>\n", "</g>\n", "<!-- \\{z3,z4\\}->\\{z3,z4\\} -->\n", - "<g id=\"edge2\" class=\"edge\"><title>\\{z3,z4\\}->\\{z3,z4\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M227.296,-40.1684C226.573,-49.5548 228.141,-58.0157 232,-58.0157 234.352,-58.0157 235.853,-54.8738 236.503,-50.2953\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"240.004,-50.2359 236.704,-40.1684 233.006,-50.097 240.004,-50.2359\"/>\n", - "<text text-anchor=\"middle\" x=\"232\" y=\"-62.2157\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>\\{z3,z4\\}->\\{z3,z4\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M72.09,-21.92C82.22,-21.75 90,-20.44 90,-18 90,-16.47 86.96,-15.39 82.21,-14.75\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"82.3,-11.25 72.09,-14.08 81.83,-18.24 82.3,-11.25\"/>\n", + "<text text-anchor=\"middle\" x=\"95\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- \\{z3,z4\\}->\\{z3,z4\\} -->\n", - "<g id=\"edge8\" class=\"edge\"><title>\\{z3,z4\\}->\\{z3,z4\\}</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M224.116,-40.2733C220.028,-57.418 222.656,-76.0157 232,-76.0157 239.519,-76.0157 242.689,-63.9733 241.51,-50.3359\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"244.935,-49.5866 239.884,-40.2733 238.025,-50.7037 244.935,-49.5866\"/>\n", - "<text text-anchor=\"middle\" x=\"232\" y=\"-80.2157\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>\\{z3,z4\\}->\\{z3,z4\\}</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M72.31,-25.6C91.08,-26.77 108,-24.23 108,-18 108,-12.93 96.83,-10.31 82.57,-10.13\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"82.21,-6.64 72.31,-10.4 82.39,-13.64 82.21,-6.64\"/>\n", + "<text text-anchor=\"middle\" x=\"113\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", "</g>\n", "<!-- \\{z1,z2\\} -->\n", - "<g id=\"node3\" class=\"node\"><title>\\{z1,z2\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"157.868,-40.0157 98.1325,-40.0157 98.1325,-4.01569 157.868,-4.01569 157.868,-40.0157\"/>\n", - "<text text-anchor=\"middle\" x=\"128\" y=\"-17.8157\" font-family=\"Times,serif\" font-size=\"14.00\">{z1,z2}</text>\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>\\{z1,z2\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"72,-123 0,-123 0,-87 72,-87 72,-123\"/>\n", + "<text text-anchor=\"middle\" x=\"36\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{z1,z2}</text>\n", "</g>\n", "<!-- \\{z1,z2\\}->\\{z3,z4\\} -->\n", - "<g id=\"edge4\" class=\"edge\"><title>\\{z1,z2\\}->\\{z3,z4\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M157.684,-22.0157C168.331,-22.0157 180.594,-22.0157 192.007,-22.0157\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"192.178,-25.5158 202.178,-22.0157 192.178,-18.5158 192.178,-25.5158\"/>\n", - "<text text-anchor=\"middle\" x=\"180\" y=\"-26.2157\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>\\{z1,z2\\}->\\{z3,z4\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M26.35,-86.61C22.19,-77.08 18.74,-65.01 21,-54 21.55,-51.3 22.33,-48.55 23.23,-45.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"26.56,-46.94 26.92,-36.35 20.03,-44.4 26.56,-46.94\"/>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- \\{z1,z2\\}->\\{z3,z4\\} -->\n", - "<g id=\"edge10\" class=\"edge\"><title>\\{z1,z2\\}->\\{z3,z4\\}</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M157.9,-4.38817C166.175,-1.19273 175.311,0.621167 184,-1.21569 186.865,-1.82123 189.767,-2.61326 192.65,-3.53401\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"191.705,-6.91528 202.299,-7.07656 194.118,-0.344219 191.705,-6.91528\"/>\n", - "<text text-anchor=\"middle\" x=\"180\" y=\"-5.21569\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>\\{z1,z2\\}->\\{z3,z4\\}</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M36,-86.8C36,-75.16 36,-59.55 36,-46.24\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"39.5,-46.18 36,-36.18 32.5,-46.18 39.5,-46.18\"/>\n", + "<text text-anchor=\"middle\" x=\"41\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", "</g>\n", "<!-- \\{z0\\} -->\n", - "<g id=\"node5\" class=\"node\"><title>\\{z0\\}</title>\n", - "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"54,-40.0157 0,-40.0157 0,-4.01569 54,-4.01569 54,-40.0157\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-17.8157\" font-family=\"Times,serif\" font-size=\"14.00\">{z0}</text>\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>\\{z0\\}</title>\n", + "<polygon fill=\"#cae1ff\" stroke=\"#cae1ff\" points=\"63,-210 9,-210 9,-174 63,-174 63,-210\"/>\n", + "<text text-anchor=\"middle\" x=\"36\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">{z0}</text>\n", "</g>\n", "<!-- \\{z0\\}->\\{z1,z2\\} -->\n", - "<g id=\"edge6\" class=\"edge\"><title>\\{z0\\}->\\{z1,z2\\}</title>\n", - "<path fill=\"none\" stroke=\"firebrick\" d=\"M54.0111,-22.0157C64.3625,-22.0157 76.498,-22.0157 87.8691,-22.0157\"/>\n", - "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"88.024,-25.5158 98.024,-22.0157 88.024,-18.5158 88.024,-25.5158\"/>\n", - "<text text-anchor=\"middle\" x=\"76\" y=\"-26.2157\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>\\{z0\\}->\\{z1,z2\\}</title>\n", + "<path fill=\"none\" stroke=\"firebrick\" d=\"M26.35,-173.61C22.19,-164.08 18.74,-152.01 21,-141 21.55,-138.3 22.33,-135.55 23.23,-132.84\"/>\n", + "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"26.56,-133.94 26.92,-123.35 20.03,-131.4 26.56,-133.94\"/>\n", + "<text text-anchor=\"middle\" x=\"26\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- \\{z0\\}->\\{z1,z2\\} -->\n", - "<g id=\"edge12\" class=\"edge\"><title>\\{z0\\}->\\{z1,z2\\}</title>\n", - "<path fill=\"none\" stroke=\"sienna\" d=\"M54.3169,-7.29102C59.9867,-4.77625 66.0641,-2.54804 72,-1.21569 77.4162,-0 83.0129,-0.239126 88.469,-1.3699\"/>\n", - "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"87.4851,-4.72877 98.0689,-4.24664 89.4945,1.97664 87.4851,-4.72877\"/>\n", - "<text text-anchor=\"middle\" x=\"76\" y=\"-5.21569\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>\\{z0\\}->\\{z1,z2\\}</title>\n", + "<path fill=\"none\" stroke=\"sienna\" d=\"M36,-173.8C36,-162.16 36,-146.55 36,-133.24\"/>\n", + "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"39.5,-133.18 36,-123.18 32.5,-133.18 39.5,-133.18\"/>\n", + "<text text-anchor=\"middle\" x=\"41\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n", "</g>\n", "</g>\n", "</svg>" @@ -1421,7 +1575,7 @@ "<Dot visualization: expr_as_graph [δFZFδF={(({z0},0),{z1,z2}),(({z0},1),{z1,z2}),(({z1,z2},0),{z3,z4}),(({z1,z2},1),{z3,z4}),(({z3,z4},0),{z3,z4}),(({z3,z4},1),{z3,z4})} & ZF={{z0},{z1,z2},{z3,z4}}(\"0\",{a,b|a:ZF & b=δF(a, 0)})]>" ] }, - "execution_count": 34, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -1432,7 +1586,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -1457,7 +1611,7 @@ "{z3,z4}\t1\t{z3,z4}\n" ] }, - "execution_count": 35, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -1466,31 +1620,6 @@ ":table δF" ] }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "ProB 2 Jupyter kernel: 1.1.1-SNAPSHOT (e52e0cac2096ac02eac65e556edce9dcd142d920)\n", - "ProB 2: 3.10.0 (0ee5d5eea6894b2899690565dfc3d9042098ce89)\n", - "ProB CLI:\n", - "\t1.10.0-nightly (05b24c45455b15cf94ea1daf18d2189efafa22fa)\n", - "\tLast changed: Tue May 19 11:43:24 2020 +0200\n", - "\tProlog: SICStus 4.5.1 (x86_64-darwin-17.7.0): Tue Apr 2 15:34:32 CEST 2019" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":version" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/info4/kapitel-2/Myhill_Nerode.ipynb b/info4/kapitel-2/Myhill_Nerode.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..d8861a307139f188c851f1b396681ba49bc788c9 --- /dev/null +++ b/info4/kapitel-2/Myhill_Nerode.ipynb @@ -0,0 +1,471 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Der Satz von Myhill und Nerode\n", + "Wir betrachten die Myhill-Nerode-Äquivalenzrelation anhand der Sprache L = {a, b, aa, bb, aac, bbc, ccc}." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: EquivalenceRelation" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "MACHINE EquivalenceRelation\n", + "/* Ein Modell der Myhill-Nerode Äquivalenzrelation R_L,\n", + " der entsprechenden Äquivalenzklassen und dem Index der Sprache.*/\n", + "SETS\n", + " Alphabet = {a,b,c}\n", + "CONSTANTS L, RL, maxsize, All, Classes, index\n", + "DEFINITIONS\n", + " class(x) == {y | x↦y : RL} ;\n", + " ANIMATION_FUNCTION1 == {r,c,i |r=1 ∧ c∈ dom(word) ∧ i=word(c)};\n", + " ANIMATION_FUNCTION2 == {r,c,i |r=2 ∧ c=1 ∧ i=z};\n", + " ANIMATION_FUNCTION3 == {(1, 0, \"Wort:\"), (2, 0, \"Äquivalenzklasse:\")};\n", + " \n", + "PROPERTIES\n", + " L ⊆ seq(Alphabet) ∧\n", + " \n", + " // All = {z | z∈seq(Alphabet) ∧ size(z)<=maxsz} & /* beschränkt auf endliche Folgen */\n", + " All = UNION(ii).(ii:0..maxsize| (1..ii) --> Alphabet) ∧\n", + "\n", + " RL = ({x,y| x∈All ∧ y∈All ∧ ∀z.(z∈All ⇒ ( x^z ∈ L ⇔ y^z ∈ L))}) ∧\n", + "\n", + " L = {[a],[b],[a,a],[b,b],[a,a,c],[b,b,c],[c,c,c]} ∧ maxsize = 3 ∧\n", + "\n", + " Classes = ran( %x.(x∈All|class(x))) ∧ /* Menge der Äquivalenzklassen {class(x)|x∈All} */\n", + " index = card( Classes ) \n", + "\n", + "ASSERTIONS\n", + " /* Test ob wir eine Äquivalenzrelation haben: */\n", + " ∀x.(x∈All ⇒ x↦x ∈ RL); /* Reflexivität */\n", + " ∀(x,y).(x↦y ∈ RL ⇒ y↦x ∈ RL); /* Symetrie */\n", + " ∀(x,y,z).(x↦y ∈ RL ∧ y↦z ∈ RL ⇒ x↦z ∈ RL); /* Transitivität */\n", + "\n", + " /* Einige Beispiele : */\n", + " [a,a] ↦ [b,b] ∈ RL;\n", + " [a,a] ↦ [c,c] ∉ RL;\n", + " [b,b,c] ↦ [c,c,c] ∈ RL;\n", + " class([a,a]) = {[a,a],[b,b]};\n", + " class([c,c,c]) = {[a,a,c],[b,b,c],[c,c,c]}\n", + "\n", + "/* Der durch die Äquivalenzklassen induzierte DFA: */\n", + "VARIABLES z, word\n", + "INVARIANT z ⊆ All ∧ word ∈ seq(Alphabet)\n", + "INITIALISATION z := class([]); word := []\n", + "OPERATIONS\n", + " Delta(terminal) = PRE terminal∈Alphabet THEN\n", + " ANY x WHERE x∈z ∧ ∀x2.(x2∈z ⇒ size(x2)≥size(x)) THEN\n", + " z := class(x^[terminal]);\n", + " word := word^[terminal]\n", + " END\n", + " END;\n", + " Final = SELECT z ∩ L ≠ {} THEN skip END\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 1: $initialise_machine()" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "$8$" + ], + "text/plain": [ + "8" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "index" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Da der $Index(L)=8<\\infty$ ist die gegebene Sprache regulär." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Durch die Äquivalenzklassen wird ein Minimalautomat induziert.\n", + "Die Menge der Zustände ist gleich der Menge der Äquivalenzklassen.\n", + "Und nach dem Einlesen eines Wortes $w∈Σ^*$ landet man in dem Zustand, der der Äquivalenzklasse von $w$ bezüglich $R_L$ entspricht." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine: EquivalenceRelation\n", + "Sets: Alphabet\n", + "Constants: L, RL, maxsize, All, Classes, index\n", + "Variables: z, word\n", + "Operations: \n", + "Delta(a)\n", + "Delta(b)\n", + "Delta(c)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":browse" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Executed operation: Delta(a)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":exec Delta terminal=a" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Executed operation: Delta(a)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":exec Delta terminal=a" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "<table style=\"font-family:monospace\"><tbody>\n", + "<tr>\n", + "<td style=\"padding:10px\">Wort:</td>\n", + "<td style=\"padding:10px\">a</td>\n", + "<td style=\"padding:10px\">a</td>\n", + "</tr>\n", + "<tr>\n", + "<td style=\"padding:10px\">Äquivalenzklasse:</td>\n", + "<td style=\"padding:10px\">{{(1|->a),(2|->a)},{(1|->b),(2|->b)}}</td>\n", + "<td style=\"padding:0px\"></td>\n", + "</tr>\n", + "</tbody></table>" + ], + "text/plain": [ + "<Animation function visualisation>" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":show" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ein weiteres Beispiel ist die Sprache $L=\\{a^n | n\\geq0\\}$.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: EquivalenceRelation2" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "MACHINE EquivalenceRelation2\n", + "SETS\n", + " Alphabet = {a,b,c}\n", + "CONSTANTS L, RL, maxsize, All, Classes, index\n", + "DEFINITIONS\n", + " class(x) == {y | x↦y : RL} ;\n", + " \n", + "PROPERTIES\n", + " L ⊆ seq(Alphabet) ∧\n", + " \n", + " // All = {z | z∈seq(Alphabet) ∧ size(z)≤maxsize} & /* Beschränkt auf endliche Folgen */\n", + " All = UNION(ii).(ii:0..maxsize| (1..ii) --> Alphabet) ∧\n", + "\n", + " RL = ({x,y| x∈All ∧ y∈All ∧ ∀z.(z∈All ⇒ ( x^z ∈ L ⇔ y^z ∈ L))}) ∧\n", + "\n", + " /*L = {x | x=a^n ∧ size(x)≤maxsize} Beschränkt auf endliche Folgen*/ \n", + " L = UNION(ii).(ii:0..maxsize| (1..ii) --> {a}) ∧ maxsize = 3 ∧\n", + "\n", + " Classes = ran( %x.(x∈All|class(x))) ∧ /* Menge der Äquivalenzklassen {class(x)|x∈All} */\n", + " index = card( Classes )\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 1: $initialise_machine()" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$5$" + ], + "text/plain": [ + "5" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "index" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Auch diese Sprache ist offensichtlich regulär.\n", + "Hier könnte man davon ausgehen, dass dies aus der Beschränkung auf endliche Folgen folgt.\n", + "Denn je länger man die zugelassenen Folgen macht, desdo mehr Äquivalenzklassen gibt es.\n", + "Es gibt eine Äquivalenzklasse für jedes $a^m$ mit $0≤m≤n$ und eine für Wörter, die nicht in der Sprache liegen, also insgesamt $n+2$." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\{\\emptyset,\\{(1\\mapsto \\mathit{a})\\},\\{(1\\mapsto \\mathit{a}),(2\\mapsto \\mathit{a})\\},\\{(1\\mapsto \\mathit{a}),(2\\mapsto \\mathit{a}),(3\\mapsto \\mathit{a})\\}\\}$" + ], + "text/plain": [ + "{∅,{(1↦a)},{(1↦a),(2↦a)},{(1↦a),(2↦a),(3↦a)}}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "L" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "$\\mathit{TRUE}$\n", + "\n", + "**Solution:**\n", + "* $\\mathit{x} = \\{(1\\mapsto \\mathit{a})\\}$\n", + "* $\\mathit{y} = \\{(1\\mapsto \\mathit{a}),(2\\mapsto \\mathit{a})\\}$\n", + "* $\\mathit{z} = \\{(1\\mapsto \\mathit{a}),(2\\mapsto \\mathit{a})\\}$" + ], + "text/plain": [ + "TRUE\n", + "\n", + "Solution:\n", + "\tx = {(1↦a)}\n", + "\ty = {(1↦a),(2↦a)}\n", + "\tz = {(1↦a),(2↦a)}" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x=[a] ∧ y=[a, a] ∧ ∃z.(z∈All ∧ not(x^z ∈ L ⇔ y^z ∈ L)) /*Gegenbeispiel für [a] ↦ [a,a] ∈ R_L*/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Betrachtet man allerdings den unendlichen Fall, so fallen die Wörter $a^m$ alle in eine Klasse.\n", + "Dies gilt, da es kein \"Ende\" der Folgen mehr gibt und somit kein Gegenbeispiel wie oben.\n", + "Insgesamt gibt es dann 2 Äquivalenzklassen ([a], [b]) und somit bleibt die Sprache dennoch regulär." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ProB 2", + "language": "prob", + "name": "prob2" + }, + "language_info": { + "codemirror_mode": "prob2_jupyter_repl", + "file_extension": ".prob", + "mimetype": "text/x-prob2-jupyter-repl", + "name": "prob" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-2/NFA_nach_DFA.ipynb b/info4/kapitel-2/NFA_nach_DFA.ipynb index 55f2a267a5c4933c7b0c25393fb50a2e754fbe89..9735e0c4795eb6880dde63d60e5bb616b9acb1fe 100644 --- a/info4/kapitel-2/NFA_nach_DFA.ipynb +++ b/info4/kapitel-2/NFA_nach_DFA.ipynb @@ -100,7 +100,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Übergangsfunktion $\\delta$ gibt us für einen Zustand und ein Symbol die möglichen nächsten Zustände an." + "Die Überführungsfunktion $\\delta$ gibt uns für einen Zustand und ein Symbol die möglichen nächsten Zustände an." ] }, { diff --git a/info4/kapitel-2/img/konkatenation_M1.svg b/info4/kapitel-2/img/konkatenation_M1.svg new file mode 100644 index 0000000000000000000000000000000000000000..e0944989c3ad4409f62c8b2cd5d394d7a4aed252 --- /dev/null +++ b/info4/kapitel-2/img/konkatenation_M1.svg @@ -0,0 +1 @@ +<svg width="720" height="713pt" viewBox="0 0 540 712.99" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:100%"><g class="graph" transform="matrix(.98 0 0 .98 3.92 710.284)"><path fill="#fff" stroke="transparent" d="M-4 4v-728.78h551.96V4H-4z"/><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="360.3" cy="-500" r="23.3"/><circle fill="none" stroke="#000" cx="360.3" cy="-500" r="27.29"/><text text-anchor="middle" x="360.3" y="-496.9" font-family="Times,serif" font-size="12">z10</text></g><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="138.3" cy="-271" r="23.3"/><circle fill="none" stroke="#000" cx="138.3" cy="-271" r="27.29"/><text text-anchor="middle" x="138.3" y="-267.9" font-family="Times,serif" font-size="12">z12</text></g><g class="edge"><path fill="none" stroke="green" d="M341.37-479.65C301.64-439.02 209.5-344.8 164.28-298.56"/><path fill="green" stroke="green" d="M166.67-296.01l-9.49 4.71 4.49-9.6 5 4.89z"/><text text-anchor="middle" x="253.3" y="-381.9" font-family="Times,serif" font-size="12">0</text></g><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="294.3" cy="-52" r="23.29"/><text text-anchor="middle" x="294.3" y="-48.9" font-family="Times,serif" font-size="12">z11</text></g><g class="edge"><path fill="none" stroke="green" d="M356.42-472.77c-11.41 77.09-44.81 302.78-57.32 387.31"/><path fill="green" stroke="green" d="M302.54-84.79l-4.93 9.38-1.99-10.41 6.92 1.03z"/><text text-anchor="middle" x="335.3" y="-267.9" font-family="Times,serif" font-size="12">1</text></g><g class="edge"><path fill="none" stroke="green" d="M157.89-290.49c13.08-5.49 25.8 1.01 25.8 19.49 0 13.72-7.01 20.83-15.97 21.34"/><path fill="green" stroke="green" d="M167.07-246.22l-9.18-5.29 10.48-1.58-1.3 6.87z"/><text text-anchor="middle" x="187.69" y="-267.9" font-family="Times,serif" font-size="12">0</text></g><g class="edge"><path fill="none" stroke="green" d="M153.83-248.4c28.69 39.92 89.94 125.12 121.22 168.63"/><path fill="green" stroke="green" d="M278.07-81.56l3 10.16-8.68-6.08 5.68-4.08z"/><text text-anchor="middle" x="225.3" y="-153.9" font-family="Times,serif" font-size="12">1</text></g><g class="edge"><path fill="none" stroke="green" d="M284.58-73.78C273.5-96.62 254.2-134 233.3-163.5c-20.8-29.35-48.56-59.66-68.7-80.4"/><path fill="green" stroke="green" d="M162.06-241.5l-4.5-9.59 9.5 4.69-5 4.9z"/><text text-anchor="middle" x="245.3" y="-153.9" font-family="Times,serif" font-size="12">0</text></g><g class="edge"><path fill="none" stroke="green" d="M310.44-68.98c12.5-6.35 25.25-.69 25.25 16.98 0 12.98-6.88 19.48-15.48 19.5"/><path fill="green" stroke="green" d="M319.25-29.13l-8.81-5.89 10.56-.89-1.75 6.78z"/><text text-anchor="middle" x="339.69" y="-48.9" font-family="Times,serif" font-size="12">1</text></g><g class="edge"><path fill="none" stroke="#000" d="M360.3-662.84v125.01"/><path stroke="#000" d="M363.8-537.61l-3.5 10-3.5-10h7z"/></g></g></svg> \ No newline at end of file diff --git a/info4/kapitel-2/img/konkatenation_M2.svg b/info4/kapitel-2/img/konkatenation_M2.svg new file mode 100644 index 0000000000000000000000000000000000000000..98312078750a113efcd1a1e1d8b427a91f1340d6 --- /dev/null +++ b/info4/kapitel-2/img/konkatenation_M2.svg @@ -0,0 +1 @@ +<svg width="720" height="952" viewBox="0 0 540 714.07" xmlns="http://www.w3.org/2000/svg" style="width:100%;height:100%"><g class="graph" transform="matrix(.98 0 0 .98 3.92 710.304)"><path fill="#fff" stroke="transparent" d="M-4 4v-728.8h551.14V4H-4z"/><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="109.57" cy="-278" r="23.3"/><circle fill="none" stroke="#000" cx="109.57" cy="-278" r="27.29"/><text text-anchor="middle" x="109.57" y="-274.9" font-family="Times,serif" font-size="12">z21</text></g><g class="edge"><path fill="none" stroke="green" d="M128.69-297.63c13.24-5.94 26.27.6 26.27 19.63 0 14.12-7.18 21.37-16.29 21.74"/><path fill="green" stroke="green" d="M137.75-252.88l-9.06-5.49 10.51-1.36-1.45 6.85z"/><text text-anchor="middle" x="158.96" y="-274.9" font-family="Times,serif" font-size="12">1</text></g><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="285.57" cy="-53" r="23.29"/><text text-anchor="middle" x="285.57" y="-49.9" font-family="Times,serif" font-size="12">z22</text></g><g class="edge"><path fill="none" stroke="green" d="M126.13-256.02c32.31 40.95 103.71 131.4 138.94 176.05"/><path fill="green" stroke="green" d="M267.97-81.95l3.45 10.02-8.95-5.68 5.5-4.34z"/><text text-anchor="middle" x="207.57" y="-157.9" font-family="Times,serif" font-size="12">0</text></g><g class="node"><circle fill="#d3d3d3" stroke="#000" cx="285.57" cy="-503" r="23.29"/><text text-anchor="middle" x="285.57" y="-499.9" font-family="Times,serif" font-size="12">z20</text></g><g class="edge"><path fill="none" stroke="green" d="M271.46-484.13c-30.31 38.42-101.93 129.16-138.91 176.01"/><path fill="green" stroke="green" d="M135.22-305.86l-8.94 5.68 3.45-10.01 5.49 4.33z"/><text text-anchor="middle" x="207.57" y="-391.9" font-family="Times,serif" font-size="12">1</text></g><g class="edge"><path fill="none" stroke="green" d="M285.57-479.48v392.9"/><path fill="green" stroke="green" d="M289.07-86.57l-3.5 10-3.5-10h7z"/><text text-anchor="middle" x="289.57" y="-274.9" font-family="Times,serif" font-size="12">0</text></g><g class="edge"><path fill="none" stroke="green" d="M301.28-70.4c12.64-6.96 25.68-1.16 25.68 17.4 0 13.78-7.18 20.52-16.05 20.24"/><path fill="green" stroke="green" d="M309.88-29.41l-8.6-6.19 10.59-.52-1.99 6.71z"/><text text-anchor="middle" x="338.46" y="-49.9" font-family="Times,serif" font-size="12">0, 1</text></g><g class="edge"><path fill="none" stroke="#000" d="M285.57-661.9v124.95"/><path stroke="#000" d="M289.07-536.64l-3.5 10-3.5-10h7z"/></g></g></svg> \ No newline at end of file diff --git a/info4/kapitel-3/CYK_Algorithmus.ipynb b/info4/kapitel-3/CYK_Algorithmus.ipynb index 79917a0d46eb43a2b5b0bce6d2178d87be24db1a..d83a945820f7dc73e07cc04a00340a21e41f4dff 100644 --- a/info4/kapitel-3/CYK_Algorithmus.ipynb +++ b/info4/kapitel-3/CYK_Algorithmus.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -18,7 +18,7 @@ "Loaded machine: CYK" ] }, - "execution_count": 74, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -79,7 +79,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -88,7 +88,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 75, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -99,7 +99,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 76, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -138,7 +138,7 @@ "{(1↦b),(2↦a),(3↦a),(4↦b),(5↦a)}" ] }, - "execution_count": 77, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -152,12 +152,12 @@ "metadata": {}, "source": [ "Am Anfang werden die Werte für T(i,0) in der INITIALISATION der Maschine berechnet:\n", - "* for(i =1,2,...,n){T(i,0)={A∈N | A→x(i) ist Regel in P};" + "* for(i =1,2,...,n){T(i,0)={A∈N | A→x(i) ist Regel in P};}" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -184,7 +184,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 78, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -195,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -207,7 +207,7 @@ "{S,A,B,C}" ] }, - "execution_count": 79, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -218,7 +218,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -230,7 +230,7 @@ "{({(1↦S)}↦{(1↦A),(2↦B)}),({(1↦S)}↦{(1↦B),(2↦C)}),({(1↦A)}↦{(1↦a)}),({(1↦A)}↦{(1↦B),(2↦A)}),({(1↦B)}↦{(1↦b)}),({(1↦B)}↦{(1↦C),(2↦C)}),({(1↦C)}↦{(1↦a)}),({(1↦C)}↦{(1↦A),(2↦B)})}" ] }, - "execution_count": 59, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -241,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ "(1↦1)" ] }, - "execution_count": 56, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -264,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -273,7 +273,7 @@ "Executed operation: For_k_loop(1,1,{S,A})" ] }, - "execution_count": 22, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -284,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -296,7 +296,7 @@ "(2↦1)" ] }, - "execution_count": 23, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -307,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -341,7 +341,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 24, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -352,7 +352,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -361,7 +361,7 @@ "Executed operation: For_k_loop(2,1,{B})" ] }, - "execution_count": 25, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -372,7 +372,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -384,7 +384,7 @@ "(3↦1)" ] }, - "execution_count": 26, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -395,7 +395,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -429,7 +429,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 27, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -440,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -452,7 +452,7 @@ "{(1↦0↦{B}),(1↦1↦{S,A}),(2↦0↦{A,C}),(2↦1↦{B}),(3↦0↦{A,C}),(4↦0↦{B}),(5↦0↦{A,C})}" ] }, - "execution_count": 28, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -463,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -472,7 +472,7 @@ "Executed operation: For_k_loop(3,1,{S,C})" ] }, - "execution_count": 29, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -483,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -492,7 +492,7 @@ "Executed operation: For_k_loop(4,1,{S,A})" ] }, - "execution_count": 30, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -503,7 +503,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -537,7 +537,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 31, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -548,7 +548,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -557,7 +557,7 @@ "Executed operation: For_k_loop(1,2,{})" ] }, - "execution_count": 32, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -568,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -580,7 +580,7 @@ "(2↦2)" ] }, - "execution_count": 33, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -591,7 +591,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -632,7 +632,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 34, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -643,7 +643,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -652,7 +652,7 @@ "Executed operation: For_k_loop(2,2,{B})" ] }, - "execution_count": 35, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -663,7 +663,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -672,7 +672,7 @@ "Executed operation: For_k_loop(3,2,{B})" ] }, - "execution_count": 36, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -683,7 +683,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -724,7 +724,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 37, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -735,7 +735,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -744,7 +744,7 @@ "Executed operation: For_k_loop(1,3,{})" ] }, - "execution_count": 38, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -755,7 +755,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -803,7 +803,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 39, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -814,7 +814,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -823,7 +823,7 @@ "Executed operation: For_k_loop(2,3,{S,A,C})" ] }, - "execution_count": 40, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -834,7 +834,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -882,7 +882,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 41, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -893,7 +893,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -902,7 +902,7 @@ "Executed operation: For_k_loop(1,4,{S,A,C})" ] }, - "execution_count": 42, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -913,7 +913,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -968,7 +968,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 43, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -979,7 +979,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -991,7 +991,7 @@ "TRUE" ] }, - "execution_count": 46, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1002,7 +1002,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1011,7 +1011,7 @@ "Executed operation: TRUE <-- Accept()" ] }, - "execution_count": 47, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1022,7 +1022,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1034,7 +1034,7 @@ "(1↦5↦5)" ] }, - "execution_count": 48, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } diff --git a/info4/kapitel-3/PDA-Kellerautomaten.ipynb b/info4/kapitel-3/PDA-Kellerautomaten.ipynb index d2f8a3452066adbea33a42fd926cb9de0dc380ce..27ccb389590d60227542e83247123599296d760e 100644 --- a/info4/kapitel-3/PDA-Kellerautomaten.ipynb +++ b/info4/kapitel-3/PDA-Kellerautomaten.ipynb @@ -191,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -199,13 +199,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "Schritt(z0,[A,BOT])" ] }, - "execution_count": 63, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -216,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -225,7 +225,7 @@ "Executed operation: Schritt(z0,[A,BOT])" ] }, - "execution_count": 64, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -236,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -267,7 +267,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 65, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -278,7 +278,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -290,7 +290,7 @@ "(z0↦[a,b,b]↦[A,BOT])" ] }, - "execution_count": 66, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -301,7 +301,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -309,13 +309,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "Schritt(z0,[A,A])" ] }, - "execution_count": 67, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -326,7 +326,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -335,7 +335,7 @@ "Executed operation: Schritt(z0,[A,A])" ] }, - "execution_count": 68, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -346,7 +346,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -377,7 +377,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 69, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -396,13 +396,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "Schritt(z1,[])" ] }, - "execution_count": 70, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -413,7 +413,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -422,7 +422,7 @@ "Executed operation: Schritt(z1,[])" ] }, - "execution_count": 71, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -433,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -461,7 +461,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 72, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -472,7 +472,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -480,13 +480,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "Schritt(z1,[])" ] }, - "execution_count": 73, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -497,7 +497,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -506,7 +506,7 @@ "Executed operation: Schritt(z1,[])" ] }, - "execution_count": 74, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -517,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -542,7 +542,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 75, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -553,7 +553,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -561,13 +561,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "LambdaSchritt(z1,[])" ] }, - "execution_count": 76, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -578,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -587,7 +587,7 @@ "Executed operation: LambdaSchritt(z1,[])" ] }, - "execution_count": 77, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -598,7 +598,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -623,7 +623,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 78, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -634,7 +634,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -642,13 +642,13 @@ "text/plain": [ "Machine: PDA\n", "Sets: Z, SYMBOLE\n", - "Constants: δ\n", + "Constants: δ, Σ, Γ\n", "Variables: z, α, γ\n", "Operations: \n", "Akzeptieren()" ] }, - "execution_count": 79, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -659,7 +659,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -668,7 +668,7 @@ "Executed operation: Akzeptieren()" ] }, - "execution_count": 80, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -695,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -704,7 +704,7 @@ "Loaded machine: PDA_für_kfG" ] }, - "execution_count": 34, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -775,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -784,7 +784,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 35, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -795,7 +795,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -804,7 +804,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 36, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -815,7 +815,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -844,7 +844,7 @@ "z0\tlambda\tlambda\tz0\t[]\n" ] }, - "execution_count": 37, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -855,7 +855,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -889,7 +889,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 38, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -900,7 +900,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -915,7 +915,7 @@ "LambdaSchritt(z0,[a,S,b])" ] }, - "execution_count": 39, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +926,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -935,7 +935,7 @@ "Executed operation: LambdaSchritt(z0,[a,S,b])" ] }, - "execution_count": 40, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -946,7 +946,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -980,7 +980,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 41, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -991,7 +991,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1005,7 +1005,7 @@ "Schritt(z0,[])" ] }, - "execution_count": 42, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1016,7 +1016,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1025,7 +1025,7 @@ "Executed operation: Schritt(z0,[])" ] }, - "execution_count": 43, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1036,7 +1036,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1067,7 +1067,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 44, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1078,7 +1078,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1093,7 +1093,7 @@ "LambdaSchritt(z0,[a,S,b])" ] }, - "execution_count": 45, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1104,7 +1104,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -1113,7 +1113,7 @@ "Executed operation: LambdaSchritt(z0,[C])" ] }, - "execution_count": 46, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1124,7 +1124,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1155,7 +1155,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 47, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1166,7 +1166,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1180,7 +1180,7 @@ "LambdaSchritt(z0,[a,b])" ] }, - "execution_count": 48, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1191,7 +1191,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1200,7 +1200,7 @@ "Executed operation: LambdaSchritt(z0,[a,b])" ] }, - "execution_count": 49, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1211,7 +1211,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1242,7 +1242,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 50, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1253,7 +1253,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1267,7 +1267,7 @@ "Schritt(z0,[])" ] }, - "execution_count": 51, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1278,7 +1278,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1287,7 +1287,7 @@ "Executed operation: Schritt(z0,[])" ] }, - "execution_count": 52, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1298,7 +1298,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1326,7 +1326,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 53, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1337,7 +1337,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1346,7 +1346,7 @@ "Executed operation: Schritt(z0,[])" ] }, - "execution_count": 54, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1357,7 +1357,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1382,7 +1382,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 55, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1393,7 +1393,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1402,7 +1402,7 @@ "Executed operation: Schritt(z0,[])" ] }, - "execution_count": 56, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1413,7 +1413,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1438,7 +1438,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 57, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1449,7 +1449,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1458,7 +1458,7 @@ "Executed operation: Akzeptieren()" ] }, - "execution_count": 58, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } diff --git a/info4/kapitel-3/PDA_nach_kfG.ipynb b/info4/kapitel-3/PDA_nach_kfG.ipynb index bd2e7f740be66b4903ab1337bc310b9669767aaa..d21054f911344d2bcac989bef5a65be320b1a51f 100644 --- a/info4/kapitel-3/PDA_nach_kfG.ipynb +++ b/info4/kapitel-3/PDA_nach_kfG.ipynb @@ -4,12 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# PDA nach kfG\n" + "# PDA nach kfG\n", + "\n", + "Aus einem gegebenen PDA kann man auch eine kontextfreie Grammatik generieren, die die gleiche Sprache akzeptiert." ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -18,7 +20,7 @@ "Loaded machine: PDA_to_CFG" ] }, - "execution_count": 41, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -41,12 +43,14 @@ " SYM(s) == (symbol,s,symbol); // Darstellung eines Symbols als Tripel für die Grammatik\n", " kfG_TERMINALE == {x|∃t.(t∈Σ ∧ x=SYM(t))};\n", " \n", - " ANIMATION_FUNCTION1 == {r,c,i| r=1 ∧ c∈dom(cur) ∧ i=prj1(Z,SYMBOLE)(prj1(Z*SYMBOLE,Z)(cur(c)))};\n", - " ANIMATION_FUNCTION2 == {r,c,i| r=2 ∧ c∈dom(cur) ∧ i=prj2(Z,SYMBOLE)(prj1(Z*SYMBOLE,Z)(cur(c)))};\n", - " ANIMATION_FUNCTION3 == {r,c,i| r=3 ∧ c∈dom(cur) ∧ i=prj2(Z*SYMBOLE,Z)(cur(c))};\n", + " \"LibraryStrings.def\";\n", + " ANIMATION_FUNCTION1 == {r,c,i| r=1 ∧ c∈dom(cur) ∧\n", + " i= IF ∃t.(t∈SYMBOLE ∧ cur(c) = (symbol |->t|-> symbol))\n", + " THEN TO_STRING(prj2(Z,SYMBOLE)(prj1((Z*SYMBOLE),Z)(cur(c))))\n", + " ELSE TO_STRING(cur(c)) END};\n", " ANIMATION_STR_JUSTIFY_LEFT == TRUE;\n", " SET_PREF_PP_SEQUENCES == TRUE\n", - "CONSTANTS δ, Regeln\n", + "CONSTANTS δ, Regeln, RegelnP1, RegelnP2, RegelnP3, RegelnP4\n", "PROPERTIES\n", " /* Ein PDA für {a^m b^m| m≥1} ; Beispiel von Info 4 (Folie 95ff) */\n", " δ = { (z0,a,BOT) ↦ (z0,[A,BOT]),\n", @@ -54,25 +58,23 @@ " (z0,b,A) ↦ (z1,[]),\n", " (z1,lambda,BOT) ↦ (z1,[]),\n", " (z1,b,A) ↦ (z1,[]) } ∧\n", - "\n", - "\n", - " Regeln = /* Punkt 1 Folie 109 */\n", - " { lhs,rhs | ∃z.(z∈PDA_Zustände ∧ lhs=SYM(S) ∧ rhs = [(z0,BOT,z)])}\n", - " ∪\n", - " /* Punkt 2 Folie 109 */\n", - " { lhs,rhs | ∃(z,a,A,z2).((z,a,A)↦(z2,[])∈δ ∧\n", - " lhs=(z,A,z2) ∧ rhs = SYMS(a)) }\n", - " ∪\n", - " /* Punkt 3 Folie 110 */\n", - " { lhs,rhs | ∃(z,a,A,B,z1,z2).((z,a,A)↦(z1,[B])∈δ ∧ z2∈PDA_Zustände ∧\n", - " lhs=(z,A,z2) ∧ rhs = SYMS(a)^[(z1,B,z2)]) }\n", - " ∪\n", - " /* Punkt 4 Folie 110 */\n", - " { lhs,rhs | ∃(z,a,A,B,C,z1,z2,z3).((z,a,A)↦(z1,[B,C])∈δ ∧ \n", - " z2∈PDA_Zustände ∧ \n", - " z3∈PDA_Zustände ∧\n", + " \n", + " /*Die Regeln der kfG zum PDA*/\n", + " /* Punkt 1 Folie 109 */\n", + " RegelnP1 = { lhs,rhs | ∃z.(z∈PDA_Zustände ∧ lhs=SYM(S) ∧ rhs = [(z0,BOT,z)])} ∧\n", + " /* Punkt 2 Folie 109 */\n", + " RegelnP2 = { lhs,rhs | ∃(z,a,A,z2).((z,a,A)↦(z2,[])∈δ ∧ lhs=(z,A,z2) ∧ rhs = SYMS(a)) } ∧\n", + " /* Punkt 3 Folie 110 */\n", + " RegelnP3 = { lhs,rhs | ∃(z,a,A,B,z1,z2).((z,a,A)↦(z1,[B])∈δ ∧ z2∈PDA_Zustände ∧\n", + " lhs=(z,A,z2) ∧ rhs = SYMS(a)^[(z1,B,z2)]) } ∧\n", + " /* Punkt 4 Folie 110 */\n", + " RegelnP4 = { lhs,rhs | ∃(z,a,A,B,C,z1,z2,z3).((z,a,A)↦(z1,[B,C])∈δ ∧ \n", + " z2∈PDA_Zustände ∧ z3∈PDA_Zustände ∧\n", " lhs=(z,A,z3) ∧ \n", - " rhs = SYMS(a)^[(z1,B,z2),(z2,C,z3)]) }\n", + " rhs = SYMS(a)^[(z1,B,z2),(z2,C,z3)]) } ∧\n", + " \n", + " Regeln = RegelnP1 ∪ RegelnP2 ∪ RegelnP3 ∪ RegelnP4\n", + " \n", "VARIABLES cur\n", "INVARIANT\n", " cur ∈ seq(kfG_Alphabet)\n", @@ -82,7 +84,7 @@ " // Anwendung einer Grammatikregel\n", " ApplyRule(LHS,RHS,pre,post) = PRE LHS↦RHS ∈ Regeln ∧\n", " cur = pre^[LHS]^post ∧\n", - " ran(pre) ⊆ kfG_TERMINALE /* Links Ableitung */\n", + " ran(pre) ⊆ kfG_TERMINALE /* Linksableitung */\n", " THEN\n", " cur := pre^RHS^post\n", " END\n", @@ -91,7 +93,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -100,7 +102,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 42, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -111,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -120,7 +122,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 43, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -131,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -143,7 +145,7 @@ "{(z0↦a↦A↦(z0↦[A,A])),(z0↦a↦BOT↦(z0↦[A,BOT])),(z0↦b↦A↦(z1↦[])),(z1↦b↦A↦(z1↦[])),(z1↦lambda↦BOT↦(z1↦[]))}" ] }, - "execution_count": 45, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -152,9 +154,16 @@ "δ" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Grammatik startet mit dem Startsymbol und simuliert die Ausführung eines entsprechenden PDAs. Dabei gibt es teils mehrere Wege, aber das Wort $ab$ wird von mindestens einem erreicht." + ] + }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -162,21 +171,15 @@ "text/markdown": [ "<table style=\"font-family:monospace\"><tbody>\n", "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "</tr>\n", - "<tr>\n", "<td style=\"padding:10px\">S</td>\n", "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "</tr>\n", "</tbody></table>" ], "text/plain": [ "<Animation function visualisation>" ] }, - "execution_count": 46, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -187,22 +190,22 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Machine: PDA_to_CFG\n", - "Sets: STATES, SYMBOLS\n", - "Constants: delta, Productions\n", + "Sets: Z, SYMBOLE\n", + "Constants: δ, Regeln, RegelnP1, RegelnP2, RegelnP3, RegelnP4\n", "Variables: cur\n", "Operations: \n", "ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z0)],[],[])\n", "ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z1)],[],[])" ] }, - "execution_count": 20, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -213,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -222,7 +225,7 @@ "Executed operation: ApplyRule((symbol|->S|->symbol),[(z0|->BOT|->z1)],[],[])" ] }, - "execution_count": 21, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -233,7 +236,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -241,13 +244,7 @@ "text/markdown": [ "<table style=\"font-family:monospace\"><tbody>\n", "<tr>\n", - "<td style=\"padding:10px\">z0</td>\n", - "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">BOT</td>\n", - "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">z1</td>\n", + "<td style=\"padding:10px\">(z0|->BOT|->z1)</td>\n", "</tr>\n", "</tbody></table>" ], @@ -255,7 +252,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 22, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -266,33 +263,7 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Machine: PDA_to_CFG\n", - "Sets: STATES, SYMBOLS\n", - "Constants: delta, Productions\n", - "Variables: cur\n", - "Operations: \n", - "ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z0),(z0|->BOT|->z1)],[],[])\n", - "ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->BOT|->z1)],[],[])" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":browse" - ] - }, - { - "cell_type": "code", - "execution_count": 24, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -301,7 +272,7 @@ "Executed operation: ApplyRule((z0|->BOT|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->BOT|->z1)],[],[])" ] }, - "execution_count": 24, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -312,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -320,19 +291,9 @@ "text/markdown": [ "<table style=\"font-family:monospace\"><tbody>\n", "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">z0</td>\n", - "<td style=\"padding:10px\">z1</td>\n", - "</tr>\n", - "<tr>\n", "<td style=\"padding:10px\">a</td>\n", - "<td style=\"padding:10px\">A</td>\n", - "<td style=\"padding:10px\">BOT</td>\n", - "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">z1</td>\n", - "<td style=\"padding:10px\">z1</td>\n", + "<td style=\"padding:10px\">(z0|->A|->z1)</td>\n", + "<td style=\"padding:10px\">(z1|->BOT|->z1)</td>\n", "</tr>\n", "</tbody></table>" ], @@ -340,7 +301,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 25, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -351,34 +312,7 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Machine: PDA_to_CFG\n", - "Sets: STATES, SYMBOLS\n", - "Constants: delta, Productions\n", - "Variables: cur\n", - "Operations: \n", - "ApplyRule((z0|->A|->z1),[(symbol|->b|->symbol)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])\n", - "ApplyRule((z0|->A|->z1),[(symbol|->a|->symbol),(z0|->A|->z0),(z0|->A|->z1)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])\n", - "ApplyRule((z0|->A|->z1),[(symbol|->a|->symbol),(z0|->A|->z1),(z1|->A|->z1)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":browse" - ] - }, - { - "cell_type": "code", - "execution_count": 27, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -387,7 +321,7 @@ "Executed operation: ApplyRule((z0|->A|->z1),[(symbol|->b|->symbol)],[(symbol|->a|->symbol)],[(z1|->BOT|->z1)])" ] }, - "execution_count": 27, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -398,7 +332,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -406,19 +340,9 @@ "text/markdown": [ "<table style=\"font-family:monospace\"><tbody>\n", "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">z1</td>\n", - "</tr>\n", - "<tr>\n", "<td style=\"padding:10px\">a</td>\n", "<td style=\"padding:10px\">b</td>\n", - "<td style=\"padding:10px\">BOT</td>\n", - "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">z1</td>\n", + "<td style=\"padding:10px\">(z1|->BOT|->z1)</td>\n", "</tr>\n", "</tbody></table>" ], @@ -426,7 +350,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 28, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -437,32 +361,7 @@ }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Machine: PDA_to_CFG\n", - "Sets: STATES, SYMBOLS\n", - "Constants: delta, Productions\n", - "Variables: cur\n", - "Operations: \n", - "ApplyRule((z1|->BOT|->z1),[],[(symbol|->a|->symbol),(symbol|->b|->symbol)],[])" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - ":browse" - ] - }, - { - "cell_type": "code", - "execution_count": 31, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -471,7 +370,7 @@ "Executed operation: ApplyRule((z1|->BOT|->z1),[],[(symbol|->a|->symbol),(symbol|->b|->symbol)],[])" ] }, - "execution_count": 31, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -482,7 +381,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -490,24 +389,16 @@ "text/markdown": [ "<table style=\"font-family:monospace\"><tbody>\n", "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "</tr>\n", - "<tr>\n", "<td style=\"padding:10px\">a</td>\n", "<td style=\"padding:10px\">b</td>\n", "</tr>\n", - "<tr>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "<td style=\"padding:10px\">symbol</td>\n", - "</tr>\n", "</tbody></table>" ], "text/plain": [ "<Animation function visualisation>" ] }, - "execution_count": 32, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -518,20 +409,20 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Machine: PDA_to_CFG\n", - "Sets: STATES, SYMBOLS\n", - "Constants: delta, Productions\n", + "Sets: Z, SYMBOLE\n", + "Constants: δ, Regeln, RegelnP1, RegelnP2, RegelnP3, RegelnP4\n", "Variables: cur\n", "Operations: " ] }, - "execution_count": 33, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -540,6 +431,13 @@ ":browse" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Da das Wort fertig abgeleitet wurde ist keine Regel mehr ausführbar." + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/info4/kapitel-5/DFA_PDA_TM.ipynb b/info4/kapitel-5/DFA_PDA_TM.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..14ef7aff976fa905875d143fb3dcfd39192cdd0f --- /dev/null +++ b/info4/kapitel-5/DFA_PDA_TM.ipynb @@ -0,0 +1,407 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# DFAs, PDAs und TM\n", + "Im folgenden werden wir uns damit befassen wie die verschiedenen Automatenmodelle in Verbinndung stehen und wie man sie ineinander übersetzt.\n", + "\n", + "Wie bereits aus der Vorlesung bekannt ist, akzeptieren DFAs reguläre, PDAs kontextfreie und Turingmaschienen $\\mathbb{L}_0$ Sprachen. Da die $REG\\subseteq CF \\subseteq \\mathbb{L}_0$ kann jeder DFA durch einen PDA und jeder PDA durch eine TM dargestellt werden. Folgende Maschiene demonstriert eine Möglichkeit dies zu tun:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Loaded machine: DFA_PDA_TM" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "MACHINE DFA_PDA_TM\n", + "\n", + "SETS\n", + " Alphabet={a,b,Blank, Bottom, lambda};\n", + " States = {z_0,z_1,z_2,z_3,z_4,z_5,z_6,z_end};\n", + " Direction = {L,R,N}\n", + "\n", + "CONSTANTS DFA, Z_DFA, δ_DFA, z_start, F_DFA,\n", + " PDA, Γ_PDA, Z_PDA, δ_PDA,\n", + " TM, Γ_TM, Z_TM, δ_TM, F_TM\n", + "PROPERTIES\n", + " //Allgemeine Regeln\n", + " Σ ⊆ Alphabet ∧\n", + " z_end ∉ Z_DFA ∪ Z_PDA ∧\n", + " lambda ∉ Σ ∪ Γ_PDA ∪ Γ_TM ∧\n", + " \n", + " //Definition des DFAs\n", + " DFA = (Σ, Z_DFA, δ_DFA, z_start, F_DFA) ∧\n", + " Z_DFA ⊆ States ∧\n", + " δ_DFA ∈ (Z_DFA×Σ)→Z_DFA ∧\n", + " z_start ∈ Z_DFA ∧\n", + " F_DFA ⊆ Z_DFA ∧\n", + "\n", + " //Definition eines PDAs zum DFA\n", + " PDA = (Σ, Γ_PDA, Z_PDA, δ_PDA, z_start, Bottom) ∧\n", + " Γ_PDA ⊆ Alphabet ∧\n", + " Z_PDA ⊆ States ∧\n", + " δ_PDA ∈ (Z_PDA×(Σ∪{lambda})×Γ_PDA)⇸(Z_PDA×seq(Γ_PDA)) ∧\n", + " z_start ∈ Z_PDA ∧ \n", + " Bottom ∈ Γ_PDA ∧\n", + " \n", + " Γ_PDA = Σ∪{Bottom} ∧\n", + " Z_PDA = Z_DFA ∧\n", + " δ_PDA = {regel|∃zustand1,zustand2,terminal.((zustand1,terminal)↦zustand2 ∈ δ_DFA ∧\n", + " (regel = (zustand1, terminal, Bottom) ↦ (zustand2, [Bottom])))}\n", + " ∪\n", + " {regel | ∃zustand.(zustand ∈ F_DFA ∧\n", + " regel = (zustand, lambda, Bottom) ↦ (zustand, []))} ∧\n", + " \n", + " //Definition einer TM zum DFA\n", + " TM = (Σ, Γ_TM, Z_TM, δ_TM, z_start, Blank, F_TM) ∧\n", + " Γ_TM ⊆ Alphabet ∧\n", + " Z_TM ⊆ States ∧\n", + " δ_TM ∈ (Z_TM×Γ_TM)→(Z_TM×Γ_TM×Direction) ∧\n", + " z_start ∈ Z_TM ∧\n", + " Blank ∈ Γ_TM ∧\n", + " F_TM ⊆ Z_TM ∧\n", + " \n", + " Γ_TM = Σ ∪ {Blank} ∧\n", + " Z_TM = Z_DFA ∪ {z_end} ∧\n", + " δ_TM = {regel|∃zustand1,zustand2,terminal.((zustand1,terminal)↦zustand2 ∈ δ_DFA ∧\n", + " (regel = (zustand1, terminal) ↦ (zustand2, Blank, R)))}\n", + " ∪\n", + " {regel | ∃zustand.(zustand ∈ Z_DFA\\F_DFA ∧\n", + " regel = (zustand, Blank) ↦ (zustand, Blank, N))}\n", + " ∪\n", + " {regel | ∃zustand.(zustand ∈ F_DFA ∧\n", + " regel = (zustand, Blank) ↦ (z_end, Blank, N))}\n", + " ∪\n", + " {regel | ∃terminal.(terminal ∈ Γ_TM ∧ regel = (z_end, terminal) ↦ (z_end, terminal, N))} ∧\n", + " F_TM = {z_end}\n", + "\n", + "DEFINITIONS\n", + " Σ == {a, b};\n", + " \n", + " //Animation des Zustandsgraphen für den DFA\n", + " CUSTOM_GRAPH_NODES1 == rec(shape:\"doublecircle\",nodes∈F_DFA); // Endzustände\n", + " CUSTOM_GRAPH_NODES2 == rec(shape:\"circle\",nodes∈Z_DFA\\F_DFA); // andere Zustände\n", + " CUSTOM_GRAPH_NODES3 == rec(shape:\"none\",color:\"white\",style:\"none\",nodes:{\"\"});\n", + " CUSTOM_GRAPH_EDGES1 == rec(color:\"green\",label:\"a\",edges:{x,y|x∈Z_DFA ∧ y=δ_DFA(x,a) ∧ y≠δ_DFA(x,b)}); \n", + " CUSTOM_GRAPH_EDGES2 == rec(color:\"green\",label:\"b\",edges:{x,y|x∈Z_DFA ∧ y=δ_DFA(x,b) ∧ y≠δ_DFA(x,a)});\n", + " CUSTOM_GRAPH_EDGES3 == rec(color:\"green\",label:\"a, b\",edges:{x,y|x∈Z_DFA ∧ y=δ_DFA(x,a) ∧ y=δ_DFA(x,b)});\n", + " CUSTOM_GRAPH_EDGES4 == rec(color:\"black\",label:\"\",edges:{\"\"}*{z_start}); // Kanten für Startknoten\n", + "END" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine constants set up using operation 0: $setup_constants()" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":constants DFA=({a, b}, //Σ\n", + " {z_0,z_1,z_2,z_3}, //Z\n", + " {(z_0,a)↦z_1, (z_0,b)↦z_3,\n", + " (z_1,a)↦z_3, (z_1,b)↦z_2,\n", + " (z_2,a)↦z_2, (z_2,b)↦z_2,\n", + " (z_3,a)↦z_3, (z_3,b)↦z_3 }, //δ\n", + " z_0, {z_0, z_2}) //z0, F" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der Zustandsgraph des DFA sieht wie folgt aus:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "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.44.1 (0)\n", + " -->\n", + "<!-- Title: prob_graph Pages: 1 -->\n", + "<svg width=\"540pt\" height=\"718pt\"\n", + " viewBox=\"0.00 0.00 540.00 718.36\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(0.98 0.98) rotate(0) translate(4 726.18)\">\n", + "<title>prob_graph</title>\n", + "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-726.18 544.89,-726.18 544.89,4 -4,4\"/>\n", + "<!-- 0 -->\n", + "<g id=\"node1\" class=\"node\">\n", + "<title>0</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"286.97\" cy=\"-498\" rx=\"22.3\" ry=\"22.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"286.97\" cy=\"-498\" rx=\"26.32\" ry=\"26.32\"/>\n", + "<text text-anchor=\"middle\" x=\"286.97\" y=\"-494.9\" font-family=\"Times,serif\" font-size=\"12.00\">z_0</text>\n", + "</g>\n", + "<!-- 2 -->\n", + "<g id=\"node3\" class=\"node\">\n", + "<title>2</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"206.97\" cy=\"-279\" rx=\"22.32\" ry=\"22.32\"/>\n", + "<text text-anchor=\"middle\" x=\"206.97\" y=\"-275.9\" font-family=\"Times,serif\" font-size=\"12.00\">z_1</text>\n", + "</g>\n", + "<!-- 0->2 -->\n", + "<g id=\"edge3\" class=\"edge\">\n", + "<title>0->2</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M278.11,-472.95C263.35,-432.92 233.8,-352.76 217.82,-309.43\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"221.09,-308.18 214.35,-300.01 214.53,-310.6 221.09,-308.18\"/>\n", + "<text text-anchor=\"middle\" x=\"250.97\" y=\"-380.9\" font-family=\"Times,serif\" font-size=\"12.00\">a</text>\n", + "</g>\n", + "<!-- 3 -->\n", + "<g id=\"node4\" class=\"node\">\n", + "<title>3</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"366.97\" cy=\"-59\" rx=\"22.32\" ry=\"22.32\"/>\n", + "<text text-anchor=\"middle\" x=\"366.97\" y=\"-55.9\" font-family=\"Times,serif\" font-size=\"12.00\">z_3</text>\n", + "</g>\n", + "<!-- 0->3 -->\n", + "<g id=\"edge1\" class=\"edge\">\n", + "<title>0->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M291.56,-471.94C305.3,-396.88 346.1,-174.01 361.24,-91.33\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"364.72,-91.76 363.08,-81.29 357.83,-90.5 364.72,-91.76\"/>\n", + "<text text-anchor=\"middle\" x=\"332.97\" y=\"-275.9\" font-family=\"Times,serif\" font-size=\"12.00\">b</text>\n", + "</g>\n", + "<!-- 1 -->\n", + "<g id=\"node2\" class=\"node\">\n", + "<title>1</title>\n", + "<ellipse fill=\"lightgrey\" stroke=\"black\" cx=\"71.97\" cy=\"-59\" rx=\"22.3\" ry=\"22.3\"/>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"71.97\" cy=\"-59\" rx=\"26.32\" ry=\"26.32\"/>\n", + "<text text-anchor=\"middle\" x=\"71.97\" y=\"-55.9\" font-family=\"Times,serif\" font-size=\"12.00\">z_2</text>\n", + "</g>\n", + "<!-- 1->1 -->\n", + "<g id=\"edge6\" class=\"edge\">\n", + "<title>1->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M90.12,-78.07C103.15,-84.28 116.14,-77.93 116.14,-59 116.14,-44.95 108.98,-37.83 99.97,-37.63\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"99.06,-34.25 90.12,-39.93 100.65,-41.06 99.06,-34.25\"/>\n", + "<text text-anchor=\"middle\" x=\"127.64\" y=\"-55.9\" font-family=\"Times,serif\" font-size=\"12.00\">a, b</text>\n", + "</g>\n", + "<!-- 2->1 -->\n", + "<g id=\"edge2\" class=\"edge\">\n", + "<title>2->1</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M195.7,-259.79C172.53,-222.37 119.36,-136.51 90.85,-90.48\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"93.73,-88.49 85.49,-81.83 87.78,-92.17 93.73,-88.49\"/>\n", + "<text text-anchor=\"middle\" x=\"147.97\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">b</text>\n", + "</g>\n", + "<!-- 2->3 -->\n", + "<g id=\"edge4\" class=\"edge\">\n", + "<title>2->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M219.8,-260.53C247.95,-222.17 315.29,-130.42 348.21,-85.57\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"351.22,-87.38 354.31,-77.25 345.57,-83.24 351.22,-87.38\"/>\n", + "<text text-anchor=\"middle\" x=\"290.97\" y=\"-169.9\" font-family=\"Times,serif\" font-size=\"12.00\">a</text>\n", + "</g>\n", + "<!-- 3->3 -->\n", + "<g id=\"edge7\" class=\"edge\">\n", + "<title>3->3</title>\n", + "<path fill=\"none\" stroke=\"green\" d=\"M380.97,-76.57C393.6,-85.12 407.14,-79.26 407.14,-59 407.14,-43.8 399.52,-36.71 390.39,-37.72\"/>\n", + "<polygon fill=\"green\" stroke=\"green\" points=\"388.99,-34.51 380.97,-41.43 391.56,-41.02 388.99,-34.51\"/>\n", + "<text text-anchor=\"middle\" x=\"418.64\" y=\"-55.9\" font-family=\"Times,serif\" font-size=\"12.00\">a, b</text>\n", + "</g>\n", + "<!-- 4 -->\n", + "<g id=\"node5\" class=\"node\">\n", + "<title>4</title>\n", + "</g>\n", + "<!-- 4->0 -->\n", + "<g id=\"edge5\" class=\"edge\">\n", + "<title>4->0</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M286.97,-663.88C286.97,-634.44 286.97,-573.63 286.97,-534.66\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"290.47,-534.29 286.97,-524.29 283.47,-534.29 290.47,-534.29\"/>\n", + "</g>\n", + "</g>\n", + "</svg>" + ], + "text/plain": [ + "<Dot visualization: custom_graph []>" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":dot custom_graph" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Machine initialised using operation 1: $initialise_machine()" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":init" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Der entstandene PDA hat die gleiche Zustandsmenge, wie der gegebene DFA.\n", + "Die Überführungen erfolgen ebenfalls analog.\n", + "Damit der PDA allerdings ein Wort akzeptiert muss der Keller leer sein. Dafür werden lambda-Übergänge eingefügt, mit denen man in einem Endzustand des DFA den Keller leeren kann.\n", + "Die vollständige Überführungsfunktion des PDA ist durch die nachfolgende Tabelle gegeben. Dabei ist die Spalte **keller_symbole** als aneinanderkettung der Symbole in der Menge zu verstehen. Also bei {(1↦Bottom)} wird Bottom und bei ∅ wird kein Symbol wieder auf den Keller gelegt." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "|zustand|symbol|keller_symbol|neuer_zustand|keller_symbole|\n", + "|---|---|---|---|---|\n", + "|$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{z\\_0}$|$\\mathit{a}$|$\\mathit{Bottom}$|$\\mathit{z\\_1}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_0}$|$\\mathit{b}$|$\\mathit{Bottom}$|$\\mathit{z\\_3}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_0}$|$\\mathit{lambda}$|$\\mathit{Bottom}$|$\\mathit{z\\_0}$|$\\emptyset$|\n", + "|$\\mathit{z\\_1}$|$\\mathit{a}$|$\\mathit{Bottom}$|$\\mathit{z\\_3}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_1}$|$\\mathit{b}$|$\\mathit{Bottom}$|$\\mathit{z\\_2}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{a}$|$\\mathit{Bottom}$|$\\mathit{z\\_2}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{b}$|$\\mathit{Bottom}$|$\\mathit{z\\_2}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{lambda}$|$\\mathit{Bottom}$|$\\mathit{z\\_2}$|$\\emptyset$|\n", + "|$\\mathit{z\\_3}$|$\\mathit{a}$|$\\mathit{Bottom}$|$\\mathit{z\\_3}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n", + "|$\\mathit{z\\_3}$|$\\mathit{b}$|$\\mathit{Bottom}$|$\\mathit{z\\_3}$|$\\{(1\\mapsto \\mathit{Bottom})\\}$|\n" + ], + "text/plain": [ + "zustand\tsymbol\tkeller_symbol\tneuer_zustand\tkeller_symbole\n", + "z_0\ta\tBottom\tz_1\t{(1|->Bottom)}\n", + "z_0\tb\tBottom\tz_3\t{(1|->Bottom)}\n", + "z_0\tlambda\tBottom\tz_0\t{}\n", + "z_1\ta\tBottom\tz_3\t{(1|->Bottom)}\n", + "z_1\tb\tBottom\tz_2\t{(1|->Bottom)}\n", + "z_2\ta\tBottom\tz_2\t{(1|->Bottom)}\n", + "z_2\tb\tBottom\tz_2\t{(1|->Bottom)}\n", + "z_2\tlambda\tBottom\tz_2\t{}\n", + "z_3\ta\tBottom\tz_3\t{(1|->Bottom)}\n", + "z_3\tb\tBottom\tz_3\t{(1|->Bottom)}\n" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":table {zustand,symbol,keller_symbol,neuer_zustand,keller_symbole| ((zustand,symbol,keller_symbol)↦(neuer_zustand,keller_symbole) : δ_PDA)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Im Gegensatz zum PDA hat die TM einen zusätzlichen Zustand.\n", + "Dieser wird benötigt, da eine TM sofort hält, wenn sie einen Endzustand erreicht.\n", + "Wenn das Wort also komplett gelesen wurde und die TM in einem Endzustand des DFA ist, darf in den Endzustand der TM übergegangen werden.\n", + "Ansonsten sind die Übergänge analog zum DFA.\n", + "Die Überführungsfunktion der TM ist durch folgende Tabelle gegeben:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "|zustand|symbol|neuer_zustand|geschriebenes_symbol|Richtung|\n", + "|---|---|---|---|---|\n", + "|$\\mathit{z\\_0}$|$\\mathit{a}$|$\\mathit{z\\_1}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_0}$|$\\mathit{b}$|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_0}$|$\\mathit{Blank}$|$\\mathit{z\\_end}$|$\\mathit{Blank}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_1}$|$\\mathit{a}$|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_1}$|$\\mathit{b}$|$\\mathit{z\\_2}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_1}$|$\\mathit{Blank}$|$\\mathit{z\\_1}$|$\\mathit{Blank}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{a}$|$\\mathit{z\\_2}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{b}$|$\\mathit{z\\_2}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_2}$|$\\mathit{Blank}$|$\\mathit{z\\_end}$|$\\mathit{Blank}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_3}$|$\\mathit{a}$|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_3}$|$\\mathit{b}$|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{R}$|\n", + "|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{z\\_3}$|$\\mathit{Blank}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_end}$|$\\mathit{a}$|$\\mathit{z\\_end}$|$\\mathit{a}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_end}$|$\\mathit{b}$|$\\mathit{z\\_end}$|$\\mathit{b}$|$\\mathit{N}$|\n", + "|$\\mathit{z\\_end}$|$\\mathit{Blank}$|$\\mathit{z\\_end}$|$\\mathit{Blank}$|$\\mathit{N}$|\n" + ], + "text/plain": [ + "zustand\tsymbol\tneuer_zustand\tgeschriebenes_symbol\tRichtung\n", + "z_0\ta\tz_1\tBlank\tR\n", + "z_0\tb\tz_3\tBlank\tR\n", + "z_0\tBlank\tz_end\tBlank\tN\n", + "z_1\ta\tz_3\tBlank\tR\n", + "z_1\tb\tz_2\tBlank\tR\n", + "z_1\tBlank\tz_1\tBlank\tN\n", + "z_2\ta\tz_2\tBlank\tR\n", + "z_2\tb\tz_2\tBlank\tR\n", + "z_2\tBlank\tz_end\tBlank\tN\n", + "z_3\ta\tz_3\tBlank\tR\n", + "z_3\tb\tz_3\tBlank\tR\n", + "z_3\tBlank\tz_3\tBlank\tN\n", + "z_end\ta\tz_end\ta\tN\n", + "z_end\tb\tz_end\tb\tN\n", + "z_end\tBlank\tz_end\tBlank\tN\n" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + ":table {zustand,symbol,neuer_zustand,geschriebenes_symbol,Richtung| ((zustand,symbol)↦(neuer_zustand,geschriebenes_symbol,Richtung)) : δ_TM}" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "ProB 2", + "language": "prob", + "name": "prob2" + }, + "language_info": { + "codemirror_mode": "prob2_jupyter_repl", + "file_extension": ".prob", + "mimetype": "text/x-prob2-jupyter-repl", + "name": "prob" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-7/TuringMaschineBerechenbarkeit.ipynb b/info4/kapitel-7/TuringMaschineBerechenbarkeit.ipynb index 6f7bacbe4308cb6c6b1ed3111b8c03e256d8ce7d..29af86cbcd2e4e90a4cd906ab3e9c10e8bac4dc6 100644 --- a/info4/kapitel-7/TuringMaschineBerechenbarkeit.ipynb +++ b/info4/kapitel-7/TuringMaschineBerechenbarkeit.ipynb @@ -39,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -48,7 +48,7 @@ "Loaded machine: TuringMachine_2" ] }, - "execution_count": 13, + "execution_count": 1, "metadata": {}, "output_type": "execute_result" } @@ -113,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -122,7 +122,7 @@ "Machine constants set up using operation 0: $setup_constants()" ] }, - "execution_count": 14, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -133,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -142,7 +142,7 @@ "Machine initialised using operation 1: $initialise_machine()" ] }, - "execution_count": 15, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -160,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -181,7 +181,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 16, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -192,7 +192,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -201,7 +201,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 17, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -212,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -233,7 +233,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 18, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -253,7 +253,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 19, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -264,7 +264,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -285,7 +285,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 20, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -296,7 +296,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -305,7 +305,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 21, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -316,7 +316,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -337,7 +337,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 22, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -348,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -357,7 +357,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 23, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -368,7 +368,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -389,7 +389,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 24, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -400,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -409,7 +409,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 25, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -420,7 +420,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -441,7 +441,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 26, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -452,7 +452,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -461,7 +461,7 @@ "Executed operation: GoTo(z0,Blank,z1,Blank,L)" ] }, - "execution_count": 28, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -472,7 +472,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -494,7 +494,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 29, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -505,7 +505,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -514,7 +514,7 @@ "Executed operation: GoTo(z1,I,z1,O,L)" ] }, - "execution_count": 30, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -525,7 +525,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -547,7 +547,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 31, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -558,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -567,7 +567,7 @@ "Executed operation: GoTo(z1,I,z1,O,L)" ] }, - "execution_count": 33, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -578,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -600,7 +600,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 34, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -611,7 +611,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -620,7 +620,7 @@ "Executed operation: GoTo(z1,I,z1,O,L)" ] }, - "execution_count": 35, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -631,7 +631,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -653,7 +653,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 36, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -664,7 +664,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -673,7 +673,7 @@ "Executed operation: GoTo(z1,I,z1,O,L)" ] }, - "execution_count": 37, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -684,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -706,7 +706,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 38, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -717,7 +717,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -726,7 +726,7 @@ "Executed operation: GoTo(z1,I,z1,O,L)" ] }, - "execution_count": 40, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -737,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -760,7 +760,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 41, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -771,7 +771,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -780,7 +780,7 @@ "Executed operation: GoTo(z1,Blank,ze,I,N)" ] }, - "execution_count": 42, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -791,7 +791,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -814,7 +814,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 43, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -825,7 +825,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 29, "metadata": {}, "outputs": [ { @@ -834,7 +834,7 @@ "Executed operation: Accept()" ] }, - "execution_count": 44, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -852,7 +852,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -875,7 +875,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 46, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" } @@ -886,7 +886,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -895,7 +895,7 @@ "Executed operation: GoTo(z0,I,z0,I,R)" ] }, - "execution_count": 47, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -906,7 +906,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -915,7 +915,7 @@ "Executed operation: GoTo(z0,O,z0,O,R)" ] }, - "execution_count": 49, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -926,7 +926,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -949,7 +949,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 50, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -960,7 +960,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -969,7 +969,7 @@ "Executed operation: GoTo(z0,O,z0,O,R)" ] }, - "execution_count": 51, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -980,7 +980,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -989,7 +989,7 @@ "Executed operation: GoTo(z0,O,z0,O,R)" ] }, - "execution_count": 52, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -1000,7 +1000,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1009,7 +1009,7 @@ "Executed operation: GoTo(z0,O,z0,O,R)" ] }, - "execution_count": 53, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1020,7 +1020,7 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 37, "metadata": {}, "outputs": [ { @@ -1029,7 +1029,7 @@ "Executed operation: GoTo(z0,O,z0,O,R)" ] }, - "execution_count": 54, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1040,7 +1040,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1049,7 +1049,7 @@ "Executed operation: GoTo(z0,Blank,z1,Blank,L)" ] }, - "execution_count": 55, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -1060,7 +1060,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1083,7 +1083,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 56, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1094,7 +1094,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -1103,7 +1103,7 @@ "Executed operation: GoTo(z1,O,z2,I,L)" ] }, - "execution_count": 58, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1114,7 +1114,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -1137,7 +1137,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 59, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1148,7 +1148,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -1157,7 +1157,7 @@ "Executed operation: GoTo(z2,O,z2,O,L)" ] }, - "execution_count": 60, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1168,7 +1168,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -1177,7 +1177,7 @@ "Executed operation: GoTo(z2,O,z2,O,L)" ] }, - "execution_count": 61, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1188,7 +1188,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -1197,7 +1197,7 @@ "Executed operation: GoTo(z2,O,z2,O,L)" ] }, - "execution_count": 62, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1208,7 +1208,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 45, "metadata": {}, "outputs": [ { @@ -1217,7 +1217,7 @@ "Executed operation: GoTo(z2,O,z2,O,L)" ] }, - "execution_count": 63, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1228,7 +1228,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -1237,7 +1237,7 @@ "Executed operation: GoTo(z2,I,z2,I,L)" ] }, - "execution_count": 64, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -1248,7 +1248,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 47, "metadata": {}, "outputs": [ { @@ -1272,7 +1272,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 65, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1283,7 +1283,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -1292,7 +1292,7 @@ "Executed operation: GoTo(z2,Blank,ze,Blank,R)" ] }, - "execution_count": 66, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -1303,7 +1303,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 49, "metadata": {}, "outputs": [ { @@ -1327,7 +1327,7 @@ "<Animation function visualisation>" ] }, - "execution_count": 67, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1340,12 +1340,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Die Turing Maschine at 33 als Ergebnis zurückgegeben." + "Die Turing Maschine hat 33 als Ergebnis zurückgegeben." ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 50, "metadata": {}, "outputs": [ { @@ -1354,7 +1354,7 @@ "Executed operation: Accept()" ] }, - "execution_count": 68, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } diff --git a/info4/kapitel-8/GOTO-Programme.ipynb b/info4/kapitel-8/GOTO-Programme.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..a966f2c69713bd956b3f13c1b6e1bd124869ab77 --- /dev/null +++ b/info4/kapitel-8/GOTO-Programme.ipynb @@ -0,0 +1,168 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# GOTO-Programme\n", + "\n", + "Die letzte Programmiersprache, die wir betrachten ist GOTO.\n", + "Die Syntax eines GOTO-Programms ist wie folgt definiert:\n", + "* Ein GOTO-Programm besteht aus Markierten Anweisungen $M_1: A_1; M_2: A_2; ... M_m: A_m;$\n", + "* Die Markierungen beginnen bei 1 und steigen immer um 1 an.\n", + "* Jede Anweisung wird durch 1 Semicolon abgeschlossen (ein GOTO-Programm endet immer mit einem Semicolon)\n", + "* Anweisungen $A_i$ dürfen dabei sein:\n", + " * Zuweisung $x_i:=x_j+c$, $x_i:=x_j-c$ und $x_i:=c$ für $c\\in\\mathbb{N}$\n", + " * Unbedingter Sprung $GOTO\\ M_i$\n", + " * Bedingter Sprung $IF\\ x_i=c\\ THEN\\ GOTO\\ M_j$\n", + " * Abbruchanweisung $HALT$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Semantik eines GOTO-Programms lässt sich wie folgt verstehen:\n", + "Das Programm startet an der mit $M_1$ markierten Anweisung und führt diese aus.\n", + "Ist diese eine Zuweisung oder ein bedingter Sprung, dessen Bedingung nicht erfüllt ist, so wird mit der nächsten Anweisung weiter gemacht.\n", + "Wenn ein unbedingter Sprung oder ein bedingter Sprung miterfüllter Bedingung ausgeführt wird, wird an der entsprechenden Markierung fortgefahren.\n", + "Bei einer Abbruchanweisung hält das Programm sofort an und der Wert von $x_0$ wird zurück gegeben.\n", + "\n", + "Da ein GOTO-Programm stets von einem $HALT$ beendet wird, ist die letze Anweisung in einem GOTO-Programm immer $HALT$ oder $GOTO$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine Funktion heißt GOTO-berechenbar, falls es ein GOTO-Programm gibt, das mit $n_1,...,n_k$ in den Variablen $x_1,...,x_k$ gestartet wird und mit $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$ endet, falls $f(n_1,n_2,...,n_k)$ definiert ist. Andernfalls stoppt das GOTO-Programm nicht.\n", + "Ein Beispiel dafür ist die 2er-Potenz $f(n) = 2^n$:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function interpret in module __main__:\n", + "\n", + "interpret(program, value_list=None, timeout=60)\n", + " Funktion zum Ausführen eines GOTO-Programms.\n", + " :param program: GOTO-Programm als String 'M1: A1; M2: A2; ... Mn: An;'\n", + " :param value_list: Array von Integern ([v1, ..., vn]).\n", + " Das GOTO-Programm startet mit diesen Werten in x1, ..., xn.\n", + " :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird.\n", + " Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife.\n", + " Ein Wert von 0 deaktiviert den Timeout.\n", + " :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem GOTO-Programm zurück.\n", + " :usage interpret('M1: x0 := x0 + 1; M2: IF x0 = 10 THEN GOTO M4; M3: GOTO M1; M4: HALT;')\n", + "\n" + ] + } + ], + "source": [ + "%run ./Interpreter/gotointerpreter.py" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "256" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret('''\n", + "M1:x0:=1;\n", + "M2: IF x1=0 THEN GOTO M10;\n", + "M3:x2:=x0+0;\n", + "M4:IF x2=0 THEN GOTO M8;\n", + "M5:x0:=x0 + 1;\n", + "M6:x2:=x2 − 1;\n", + "M7:GOTO M4;\n", + "M8: x1:=x1-1;\n", + "M9:GOTO M2;\n", + "M10: HALT;''', [8])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mit GOTO- und WHILE-Programmen kann man auch partielle Funktionen berechnen.\n", + "das folgende GOTO-Programm berechnet die Funktion f(x)=x, falls x>5 und undefiniert sonst:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Die Funktion rechnet relativ lange.\n", + "Vielleicht liegt eine Endlosschleife vor.\n", + "Möchten sie abbrechen? [J,n]:Ja\n", + "Die Ausführung des Programms wurde unterbrochen.\n", + "Daher ist der Rückgabewert des Programms nicht definiert.\n" + ] + }, + { + "data": { + "text/plain": [ + "-1" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret('''\n", + "M1: x2 := x1 -5;\n", + "M2: IF x2 = 0 THEN GOTO M2;\n", + "M3: x0:=x1+0;\n", + "M4: HALT;''', [5])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-8/Interpreter/gotointerpreter.py b/info4/kapitel-8/Interpreter/gotointerpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..5ef4fb659037a880a800a41aa23e171f79edbacc --- /dev/null +++ b/info4/kapitel-8/Interpreter/gotointerpreter.py @@ -0,0 +1,320 @@ +import lexer +from loopinterpreter import ErrorHandler +from whileinterpreter import Timeout +from whileinterpreter import State +import re +import operator + + +class GOTOInterpreter: + def __init__(self, timeout=60): + self.values = {} + self.lex = None + self.error_handler = None + self.regex_to_token = [(re.compile(r'\d+'), 'NUMBER'), + (re.compile(r'x\d+'), 'IDENTIFIER'), + (re.compile(r'M\d+'), 'MARKER'), + (re.compile(r'\+'), 'PLUS'), + (re.compile(r'[−-]'), 'MINUS'), + (re.compile(r':=|≔'), 'ALLOCATION'), + (re.compile(r'='), 'EQUALS'), + (re.compile(r'/=|≠|!='), 'NOTEQUALS'), + (re.compile(r'IF'), 'IF'), + (re.compile(r'THEN'), 'THEN'), + (re.compile(r'GOTO'), 'GOTO'), + (re.compile(r'HALT'), 'HALT'), + (re.compile(r';'), 'SEMICOLON'), + (re.compile(r':'), 'COLON'), + (re.compile(r'BREAK'), 'BREAK'), + (re.compile(r'\s+', re.MULTILINE), 'WHITESPACE'), + (re.compile(r'[^\n]*'), 'UNKNOWN')] + self.marker_to_position = {} + self.marker_to_line = {} + self.timeout = timeout + self.halted = False + + def next_token(self): + new_token = self.lex.next() + if new_token is None: + return None + elif new_token.k == 'BREAK': + self.error_handler.handle_break() + return self.next_token() + elif new_token.k == 'WHITESPACE': + if new_token.v.count('\n') > 0: + self.error_handler.increase_line(new_token.v.count('\n')) + return self.next_token() + else: + return new_token + + def next_nonempty_token(self, current_function, expected_token): + token = self.next_token() + if token is None: + self.error_handler.handle_error( + 'Frühzeitiges Ende von ' + current_function + '\n' + 'Erwartet: ' + expected_token) + return token + + def process_assignment(self, identifier_token_1): + identifier_1 = identifier_token_1.v + if not self.next_nonempty_token('Zuweisung', ':=').k == 'ALLOCATION': + self.error_handler.handle_error(':= in Zuweisung erwartet.') + identifier_token_2 = self.next_nonempty_token('Zuweisung', 'IDENTIFIER (x0, x1, ...) oder NUMBER') + if identifier_token_2.k == 'NUMBER': + value_1 = int(identifier_token_2.v) + self.values.update({identifier_token_1.v: value_1}) + if not self.next_nonempty_token('Zuweisung', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss einer Zuweisung erwartet.') + return self.next_token() + if not identifier_token_2.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in Zuweisung erwartet.') + identifier_2 = identifier_token_2.v + if identifier_2 in self.values: + value_2 = self.values.get(identifier_2) + else: + value_2 = 0 + operator_token = self.next_nonempty_token('Zuweisung', '+ oder -') + op = None + if operator_token.k == 'PLUS': + op = operator.__add__ + elif operator_token.k == 'MINUS': + op = operator.__sub__ + else: + self.error_handler.handle_error('+ oder - in Zuweisung erwartet.') + number_token = self.next_nonempty_token('Zuweisung', 'NUMBER') + if not number_token.k == 'NUMBER': + self.error_handler.handle_error('NUMBER in Zuweisung erwartet.') + value_1 = max(0, op(value_2, int(number_token.v))) + self.values.update({identifier_1: value_1}) + if not self.next_nonempty_token('Zuweisung', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss einer Zuweisung erwartet.') + return self.next_token() + + def verify_assignment(self, identifier_token_1): + if not self.next_nonempty_token('Zuweisung', ':=').k == 'ALLOCATION': + self.error_handler.handle_error(':= in Zuweisung erwartet.') + + identifier_token_2 = self.next_nonempty_token('Zuweisung', 'IDENTIFIER (x0, x1, ...) oder NUMBER') + if identifier_token_2.k == 'NUMBER': + if not self.next_nonempty_token('Zuweisung', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss einer Zuweisung erwartet.') + return self.next_token() + + if not identifier_token_2.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in Zuweisung erwartet.') + if self.next_nonempty_token('Zuweisung', '+ oder -').k not in ['PLUS', 'MINUS']: + self.error_handler.handle_error('+ oder - in Zuweisung erwartet.') + if not self.next_nonempty_token('Zuweisung', 'NUMBER').k == 'NUMBER': + self.error_handler.handle_error('NUMBER in Zuweisung erwartet.') + if not self.next_nonempty_token('Zuweisung', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss einer Zuweisung erwartet.') + return self.next_token() + + def process_goto(self, goto_token): + marker_token = self.next_nonempty_token('GOTO', 'MARKER (M1, M2, ...)') + if not marker_token.k == 'MARKER': + self.error_handler.handle_error('MARKER (M1, M2, ...) in GOTO erwartet.') + if not self.next_nonempty_token('GOTO', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss eines GOTO erwartet') + marker_number = int(marker_token.v[1:]) + saved_position = marker_token.p + saved_line = self.error_handler.line_number + current_token = self.next_token() + while current_token is not None and max(self.marker_to_position.keys()) < int(marker_number): + current_token = self.verify_line(current_token) + if marker_number not in self.marker_to_position.keys(): + self.lex.current_position = saved_position + self.error_handler.line_number = saved_line + self.error_handler.handle_error('GOTO zu nicht vorhandener Markierung') + self.lex.current_position = self.marker_to_position.get(marker_number) + self.error_handler.line_number = self.marker_to_line.get(marker_number) + if self.test_homeomorphic_embedding: + new_state = State(self.lex.current_position, self.values) + for state in self.state_list: + + if state.less_or_equal(new_state): + self.error_handler.handle_endless_loop() + self.state_list.append(new_state) + return self.next_token() + + def verify_goto(self, goto_token): + marker_token = self.next_nonempty_token('GOTO', 'MARKER (M1, M2, ...)') + if not marker_token.k == 'MARKER': + self.error_handler.handle_error('MARKER (M1, M2, ...) in GOTO erwartet.') + if not self.next_nonempty_token('GOTO', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss eines GOTO erwartet') + marker_number = int(marker_token.v[1:]) + saved_position = self.lex.current_position + saved_line = self.error_handler.line_number + current_token = self.next_token() + while current_token is not None and max(self.marker_to_position.keys()) < int(marker_number): + current_token = self.verify_line(current_token) + self.lex.current_position = saved_position + self.error_handler.line_number = saved_line + if marker_number not in self.marker_to_position.keys(): + self.error_handler.handle_error('GOTO zu nicht vorhandener Markierung') + return self.next_token() + + def process_if(self, if_token): + identifier_token = self.next_nonempty_token('IF', 'IDENTIFIER') + if not identifier_token.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in IF erwartet') + if not self.next_nonempty_token('IF', '=').k == 'EQUALS': + self.error_handler.handle_error('= in IF erwartet') + number_token = self.next_nonempty_token('IF', 'NUMBER') + if not number_token.k == 'NUMBER': + self.error_handler.handle_error('NUMBER in IF erwartet') + + if not self.next_nonempty_token('IF', 'THEN').k == 'THEN': + self.error_handler.handle_error('THEN in IF erwartet') + current_token = self.next_nonempty_token('IF', 'GOTO') + if not current_token.k == 'GOTO': + self.error_handler.handle_error('GOTO in IF erwartet') + if identifier_token.v in self.values.keys(): + identifier_value = self.values.get(identifier_token.v) + else: + identifier_value = 0 + if identifier_value == int(number_token.v): + return self.process_goto(current_token) + else: + return self.verify_goto(current_token) + + def verify_if(self, if_token): + if not self.next_nonempty_token('IF', 'IDENTIFIER').k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in IF erwartet') + if not self.next_nonempty_token('IF', '=').k == 'EQUALS': + self.error_handler.handle_error('= in IF erwartet') + if not self.next_nonempty_token('IF', 'NUMBER').k == 'NUMBER': + self.error_handler.handle_error('NUMBER in IF erwartet') + if not self.next_nonempty_token('IF', 'THEN').k == 'THEN': + self.error_handler.handle_error('THEN in IF erwartet') + current_token = self.next_nonempty_token('IF', 'GOTO') + if not current_token.k == 'GOTO': + self.error_handler.handle_error('GOTO in IF erwartet') + return self.verify_goto(current_token) + + def process_halt(self, halt_token): + if not self.next_nonempty_token('HALT', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss eines HALT erwartet') + self.halted = True + current_token = self.next_token() + while current_token is not None: + current_token = self.verify_line(current_token) + return current_token + + def verify_halt(self, halt_token): + if not self.next_nonempty_token('HALT', 'SEMICOLON').k == 'SEMICOLON': + self.error_handler.handle_error('SEMICOLON zum Abschluss eines HALT erwartet') + return self.next_token() + + def next_marker_number(self): + if self.marker_to_position.keys(): + return max(self.marker_to_position.keys()) + 1 + else: + return 1 + + def process_line(self, current_token): + if current_token is None or not current_token.k == 'MARKER': + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: MARKER (M1, M2, ...)') + marker_number = int(current_token.v[1:]) + if not (marker_number == self.next_marker_number() or + (marker_number in self.marker_to_position.keys() and + current_token.p == self.marker_to_position.get(marker_number))): + self.error_handler.handle_error('Die Nummern der Anweisungen starten bei 1 und steigen fortlaufend.') + self.marker_to_position.update({marker_number: current_token.p}) + self.marker_to_line.update({marker_number: self.error_handler.line_number}) + colon_token = self.next_nonempty_token('LINE', 'COLON') + if not colon_token.k == 'COLON': + self.error_handler.handle_error('DOPPELPUNKT nach MARKER (M1, M2, ...) erwartet.') + + current_token = self.next_nonempty_token('LINE', 'IDENTIFIER (x0, x1, ...), IF, GOTO oder HALT') + if current_token.k not in ['IDENTIFIER', 'IF', 'GOTO', 'HALT']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...), IF, GOTO oder HALT') + elif current_token.k == 'IDENTIFIER': + current_token = self.process_assignment(current_token) + elif current_token.k == 'GOTO': + current_token = self.process_goto(current_token) + elif current_token.k == 'IF': + current_token = self.process_if(current_token) + elif current_token.k == 'HALT': + current_token = self.process_halt(current_token) + return current_token + + def verify_line(self, current_token): + if current_token is None or not current_token.k == 'MARKER': + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: MARKER (M1, M2, ...)') + marker_number = int(current_token.v[1:]) + if not (marker_number == self.next_marker_number() or + (marker_number in self.marker_to_position.keys() and + current_token.p == self.marker_to_position.get(marker_number))): + self.error_handler.handle_error('Die Nummern der Anweisungen starten bei 1 und steigen fortlaufend.') + self.marker_to_position.update({marker_number: current_token.p}) + self.marker_to_line.update({marker_number: self.error_handler.line_number}) + if not self.next_nonempty_token('LINE', 'COLON').k == 'COLON': + self.error_handler.handle_error('DOPPELPUNKT nach MARKER (M1, M2, ...) erwartet.') + + current_token = self.next_nonempty_token('LINE', 'IDENTIFIER (x0, x1, ...), IF, GOTO oder HALT') + if current_token.k not in ['IDENTIFIER', 'IF', 'GOTO', 'HALT']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...), IF, GOTO oder HALT') + elif current_token.k == 'IDENTIFIER': + current_token = self.verify_assignment(current_token) + elif current_token.k == 'GOTO': + current_token = self.verify_goto(current_token) + elif current_token.k == 'IF': + current_token = self.verify_if(current_token) + elif current_token.k == 'HALT': + current_token = self.verify_halt(current_token) + return current_token + + def interpret(self, program, values=None, test_homeomorphic_embedding=False): + try: + with Timeout(self.timeout): + self.halted = False + self.lex = lexer.Lexer(self.regex_to_token, program) + self.error_handler = ErrorHandler(program, self) + self.state_list = [] + self.test_homeomorphic_embedding = test_homeomorphic_embedding + self.values=values + if values is None: + self.values = {} + current_token = self.next_token() + while current_token is not None: + current_token = self.process_line(current_token) + if not self.halted: + self.error_handler.handle_error('Ende des Programms ohne HALT erreicht.') + if 'x0' in self.values: + return self.values.get('x0') + return 0 + except KeyboardInterrupt: + print('Die Ausführung des Programms wurde unterbrochen.\n' + + 'Daher ist der Rückgabewert des Programms nicht definiert.') + return -1 + + +def interpret(program, value_list=None, timeout=60, debug=False): + """Funktion zum Ausführen eines GOTO-Programms. + :param program: GOTO-Programm als String 'M1: A1; M2: A2; ... Mn: An;' + :param value_list: Array von Integern ([v1, ..., vn]). + Das GOTO-Programm startet mit diesen Werten in x1, ..., xn. + :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird. + Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife. + Ein Wert von 0 deaktiviert den Timeout. + :param debug Boolean der angibt ob mit Homeomorphic Embedding auf mögliche Endlosschleifen geprüft werden soll. + :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem GOTO-Programm zurück. + :usage interpret('M1: x0 := x0 + 1; M2: IF x0 = 10 THEN GOTO M4; M3: GOTO M1; M4: HALT;')""" + interpreter = GOTOInterpreter(timeout) + values = None + if value_list is not None: + values = {} + for index, value in enumerate(value_list): + if not isinstance(value, int) or value < 0 or not int(value) == value: + raise ValueError("Variablen können nur natürliche Zahlen zugewiesen bekommen.") + values.update({'x' + str(index + 1): value}) + return interpreter.interpret(program, values, debug) + + +if __name__ == '__main__': + help(interpret) diff --git a/info4/kapitel-8/Interpreter/lexer.py b/info4/kapitel-8/Interpreter/lexer.py new file mode 100644 index 0000000000000000000000000000000000000000..a7fe3c16d952f89ed00d280b6df989e7dd759c2c --- /dev/null +++ b/info4/kapitel-8/Interpreter/lexer.py @@ -0,0 +1,32 @@ +import re + + +class Token: + def __init__(self, key, value, position): + self.k = key + self.v = value + self.p = position + + +class Lexer: + def __init__(self, regex_to_token, program): + self.regex_to_token = regex_to_token + self.program = program + self.current_position = 0 + + def next(self): + new_position = 0 + next_token = None + if self.current_position < len(self.program): + for pattern, value in self.regex_to_token: + match = pattern.match(self.program, self.current_position) + if match: + next_token = Token(value, match.group(), self.current_position) + new_position = match.span()[1] + break + if self.current_position == new_position: + msg = ['Fehler in Zeile ' + str(self.program.count('\n', 0, self.current_position) + 1) + ':', + 'Unbekannter String: ' + re.compile(r'[^\n]*').match(self.program, self.current_position).group()] + raise SyntaxError('\n'.join(msg)) + self.current_position = new_position + return next_token diff --git a/info4/kapitel-8/Interpreter/loopinterpreter.py b/info4/kapitel-8/Interpreter/loopinterpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..68823fef09fbf20c46c2a0393aa4cd0d113aa2cc --- /dev/null +++ b/info4/kapitel-8/Interpreter/loopinterpreter.py @@ -0,0 +1,277 @@ +import lexer +import sys +import operator +import re +from IPython.display import clear_output + + +class ErrorHandler: + def __init__(self, program, interpreter): + sys.tracebacklimit = 0 + self.program = program + self.line_number = 0 + self.interpreter = interpreter + + def handle_error(self, message): + msg = ['Fehler in Zeile ' + str(self.line_number + 1), + self.program.split('\n')[self.line_number], + message] + raise SyntaxError('\n'.join(msg)) from None + + def increase_line(self, value): + self.line_number += value + + def handle_break(self): + clear_output(wait=True) + print('BREAK in Zeile ' + str(self.line_number)) + print('Aktueller Zustand:') + for k, v in self.interpreter.values.items(): + print('Variable ' + k + ': ' + str(v)) + user_input = input('Drücke ENTER zum Fotfahren oder schreibe EXIT zum Beenden:') + if user_input.lower() == 'exit': + raise KeyboardInterrupt + + def handle_endless_loop(self): + self.handle_error("Mögliche Endlosschleife gefunden.") + + +class LOOPInterpreter: + def __init__(self): + self.regex_to_token = [(re.compile(r'\d+'), 'NUMBER'), + (re.compile(r'x\d+'), 'IDENTIFIER'), + (re.compile(r'\+'), 'PLUS'), + (re.compile(r'[−-]'), 'MINUS'), + (re.compile(r':=|≔'), 'ALLOCATION'), + (re.compile(r'LOOP'), 'LOOP'), + (re.compile(r'DO'), 'DO'), + (re.compile(r'END'), 'END'), + (re.compile(r';'), 'SEMICOLON'), + (re.compile(r'BREAK'), 'BREAK'), + (re.compile(r'\s+', re.MULTILINE), 'WHITESPACE'), + (re.compile(r'[^\n]*'), 'UNKNOWN')] + self.values = {} + self.lex = None + self.error_handler = None + + def process_assignment(self, forbidden_identifiers, identifier_token_1): + identifier_1 = identifier_token_1.v + if identifier_1 in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_1 + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('Zuweisung', ':=').k == 'ALLOCATION': + self.error_handler.handle_error(':= in Zuweisung erwartet.') + identifier_token_2 = self.next_nonempty_token('Zuweisung', 'IDENTIFIER (x0, x1, ...) oder NUMBER') + if identifier_token_2.k == 'NUMBER': + value_1 = int(identifier_token_2.v) + self.values.update({identifier_token_1.v: value_1}) + return self.next_token() + if not identifier_token_2.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in Zuweisung erwartet.') + identifier_2 = identifier_token_2.v + if identifier_2 in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_2 + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if identifier_2 in self.values: + value_2 = self.values.get(identifier_2) + else: + value_2 = 0 + operator_token = self.next_nonempty_token('Zuweisung', '+ oder -') + op = None + if operator_token.k == 'PLUS': + op = operator.__add__ + elif operator_token.k == 'MINUS': + op = operator.__sub__ + else: + self.error_handler.handle_error('+ oder - in Zuweisung erwartet.') + number_token = self.next_nonempty_token('Zuweisung', 'NUMBER') + if not number_token.k == 'NUMBER': + self.error_handler.handle_error('NUMBER in Zuweisung erwartet.') + value_1 = max(0, op(value_2, int(number_token.v))) + self.values.update({identifier_1: value_1}) + return self.next_token() + + def verify_assignment(self, forbidden_identifiers, identifier_token_1): + identifier_1 = identifier_token_1.v + if identifier_1 in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_1 + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('Zuweisung', ':=').k == 'ALLOCATION': + self.error_handler.handle_error(':= in Zuweisung erwartet.') + + identifier_token_2 = self.next_nonempty_token('Zuweisung', 'IDENTIFIER (x0, x1, ...) oder NUMBER') + if identifier_token_2.k == 'NUMBER': + return self.next_token() + + if not identifier_token_2.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in Zuweisung erwartet.') + identifier_2 = identifier_token_2.v + if identifier_2 in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_2 + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + + if self.next_nonempty_token('Zuweisung', '+ oder -').k not in ['PLUS', 'MINUS']: + self.error_handler.handle_error('+ oder - in Zuweisung erwartet.') + if not self.next_nonempty_token('Zuweisung', 'NUMBER').k == 'NUMBER': + self.error_handler.handle_error('NUMBER in Zuweisung erwartet.') + + return self.next_token() + + def process_loop(self, forbidden_identifiers, loop_token): + identifier_token = self.next_nonempty_token('LOOP', 'IDENTIFIER (x0, x1, ...)') + if not identifier_token.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in LOOP erwartet.') + if identifier_token.v in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_token.v + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('LOOP', 'DO').k == 'DO': + self.error_handler.handle_error('DO in LOOP erwartet.') + + if identifier_token.v in self.values: + number_of_loops = int(self.values.get(identifier_token.v)) + else: + number_of_loops = 0 + + saved_position = self.lex.current_position + saved_line = self.error_handler.line_number + forbidden_identifiers.append(identifier_token.v) + + if number_of_loops == 0: + end_found = False + while not end_found: + token = self.verify_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in LOOP erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + for index in range(number_of_loops): + self.lex.current_position = saved_position + self.error_handler.line_number = saved_line + end_found = False + while not end_found: + token = self.process_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in LOOP erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + forbidden_identifiers.remove(identifier_token.v) + return self.next_token() + + def verify_loop(self, forbidden_identifiers, loop_token): + identifier_token = self.next_nonempty_token('LOOP', 'IDENTIFIER') + if not identifier_token.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in LOOP erwartet.') + if identifier_token.v in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_token.v + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('LOOP', 'DO').k == 'DO': + self.error_handler.handle_error('DO in LOOP erwartet.') + + forbidden_identifiers.append(identifier_token.v) + + end_found = False + while not end_found: + token = self.verify_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in LOOP erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + forbidden_identifiers.remove(identifier_token.v) + return self.next_token() + + def process_program(self, forbidden_identifiers, current_token): + if current_token is None or current_token.k not in ['IDENTIFIER', 'LOOP']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...) oder LOOP') + elif current_token.k == 'IDENTIFIER': + current_token = self.process_assignment(forbidden_identifiers, current_token) + elif current_token.k == 'LOOP': + current_token = self.process_loop(forbidden_identifiers, current_token) + return current_token + + def verify_program(self, forbidden_identifiers, current_token): + if current_token is None or current_token.k not in ['IDENTIFIER', 'LOOP']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...) oder LOOP') + elif current_token.k == 'IDENTIFIER': + current_token = self.verify_assignment(forbidden_identifiers, current_token) + elif current_token.k == 'LOOP': + current_token = self.verify_loop(forbidden_identifiers, current_token) + return current_token + + def next_token(self): + new_token = self.lex.next() + if new_token is None: + return None + elif new_token.k == 'BREAK': + self.error_handler.handle_break() + return self.next_token() + elif new_token.k == 'WHITESPACE': + if new_token.v.count('\n') > 0: + self.error_handler.increase_line(new_token.v.count('\n')) + return self.next_token() + else: + return new_token + + def next_nonempty_token(self, current_function, expected_token): + token = self.next_token() + if token is None: + self.error_handler.handle_error( + 'Frühzeitiges Ende von ' + current_function + '\n' + 'Erwartet: ' + expected_token) + return token + + def interpret(self, program, values=None): + try: + self.lex = lexer.Lexer(self.regex_to_token, program) + self.error_handler = ErrorHandler(program, self) + self.values = values + if values is None: + self.values = {} + forbidden_identifiers = [] + current_token = self.next_token() + while current_token is not None: + current_token = self.process_program(forbidden_identifiers, current_token) + if current_token is not None: + if not current_token.k == 'SEMICOLON': + self.error_handler.handle_error('Semicolon erwartet') + current_token = self.next_token() + if current_token is None: + self.error_handler.handle_error('Semikolons werden nur zur Trennung und nicht zum ' + + 'Abschluss von Programmen verwendet') + if 'x0' in self.values: + return self.values.get('x0') + return 0 + except KeyboardInterrupt: + print('Die Ausführung des Programms wurde unterbrochen.\n' + + 'Daher ist der Rückgabewert des Programms nicht definiert.') + return -1 + + +def interpret(program, value_list=None): + """Funktion zum Ausführen eines LOOP-Programms. + :param program: LOOP-Programm als String 'x1 := 4; LOOP x1 DO x0:=x0+1 END' + :param value_list: Array von Integern ([v1, ..., vn]). + Das LOOP-Programm startet mit diesen Werten in x1, ..., xn. + :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem LOOP-Programm zurück. + :usage interpret('x1:=10; x2:=8; x0:=x2+0; LOOP x1 DO x0:=x0+1 END')""" + interpreter = LOOPInterpreter() + values = None + if value_list is not None: + values = {} + for index, value in enumerate(value_list): + if not isinstance(value, int) or value < 0 or not int(value) == value: + raise ValueError("Variablen können nur natürliche Zahlen zugewiesen bekommen.") + values.update({'x' + str(index + 1): value}) + return interpreter.interpret(program, values) + + +if __name__ == '__main__': + help(interpret) diff --git a/info4/kapitel-8/Interpreter/test_goto_interpreter.py b/info4/kapitel-8/Interpreter/test_goto_interpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..8c11924c9d5bc1e1c511d73962c1315b9fa52644 --- /dev/null +++ b/info4/kapitel-8/Interpreter/test_goto_interpreter.py @@ -0,0 +1,216 @@ +from gotointerpreter import interpret +from unittest import mock +from unittest import TestCase + + +def input_continue(prompt): + return '' + + +def str_yes(prompt): + return 'J' + + +def input_exit(prompt): + return 'EXIT' + + +class GOTOInterpreterTest(TestCase): + def test_assignment_default_zero(self): + self.assertEqual(0, interpret('M1:x0:=x0 + 0;M2:HALT;')) + self.assertEqual(0, interpret('M1:x0:=x1 + 0;M2:HALT;')) + self.assertEqual(0, interpret('M1:x0:=x2 + 0;M2:HALT;')) + + def test_assignment_non_negative(self): + self.assertEqual(0, interpret('M1:x0:=x0-1;M2:HALT;')) + self.assertEqual(0, interpret('M1:x0:=x1-1;M2:HALT;')) + self.assertEqual(0, interpret('M1:x0:=x2-6;M2:HALT;')) + + def test_assignment_number(self): + self.assertEqual(5, interpret('M1:x0:=5;M2:HALT;')) + self.assertEqual(2, interpret('M1:x0:=2;M2:HALT;')) + self.assertEqual(3, interpret('M1:x0:=3;M2:HALT;')) + + def test_assignment_variable(self): + self.assertEqual(1, interpret('M1:x0:=x0+1;M2:HALT;'), 1) + self.assertEqual(4, interpret('M1:x0:= 5; M2:x0:=x0-1; M3:HALT;')) + self.assertEqual(1, interpret('M1:x0:=x1-1; M2:x0:=x0+1; M3:HALT;')) + self.assertEqual(3, interpret('M1:x0:=4; M2:x0:= x0 − 1; M3:HALT;')) + + def test_assignment_wrong_syntax(self): + with self.assertRaises(SyntaxError): + interpret('M1:x1:=x2;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x1:=0+x2;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x5:=-1+x4;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x5:=-x3+x1;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x5:=x1-x3;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x2:=x1+x4;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x2:=x1+2;;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x1:=c;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:xi:=2;M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x0:=xj+1;M2:HALT;') + + def test_goto_skip_lines(self): + self.assertEqual(2, interpret('M1:x0:=2;M2:GOTO M4;M3:x0:=0;M4:HALT;')) + self.assertEqual(3, interpret('M1:x0:=3;M2:GOTO M5;M3:GOTO M1;M4:x0:=5;M5:HALT;')) + self.assertEqual(0, interpret('M1:GOTO M3;M2:x0:=x2+5;M3:HALT;')) + + def test_if(self): + self.assertEqual(10, interpret('M1:x2:=10;' + + 'M2:IF x2=0 THEN GOTO M6;' + + 'M3:x0:=x0+1;M4:x2:=x2-1;' + + 'M5:GOTO M2; M6:HALT;')) + self.assertEqual(1, interpret('M1:IF x0=5 THEN GOTO M4;M2:IF x0=2 THEN GOTO M4;M3:x0:=x0+1;M4:HALT;')) + + def test_syntax_missing_operator(self): + with self.assertRaises(SyntaxError): + interpret('M1:x0:=x1 2;M2:HALT;') + + def test_markers_start_with_one(self): + with self.assertRaises(SyntaxError): + interpret('M0:x0:=2;M1:HALT;') + with self.assertRaises(SyntaxError): + interpret('M2:x0:=2;M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M10:x0:=2;M11:HALT;') + + def test_markers_increment_by_one(self): + with self.assertRaises(SyntaxError): + interpret('M1:x0:=3;M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:x0:=2;M1:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M3:HALT;') + + def test_linebreaks(self): + self.assertEqual(0, interpret(''' + M1:x1:=2; + M2: IF x1=2 THEN GOTO M4; + M3:HALT; + M4:GOTO M3;''')) + + @mock.patch('loopinterpreter.input', side_effect=input_continue) + def test_break(self, custom_input): + self.assertEqual(2, interpret('M1:x0:=2;BREAK M2:HALT;')) + + @mock.patch('loopinterpreter.input', side_effect=input_exit) + def test_break_exit(self, custom_input): + self.assertEqual(-1, interpret('M1:GOTO M1; BREAK')) + + def test_assignment_missing_tokens(self): + with self.assertRaises(SyntaxError): + interpret('M1: x0') + with self.assertRaises(SyntaxError): + interpret('M1: x1 x2+2;') + with self.assertRaises(SyntaxError): + interpret('M1: x1 := x2+2 M2') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2:x1 x2+0; M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2:x1:=2 M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: x1:= M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2: x1 := x2 M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2: x1 := x2 - M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2: x1:= x2 + 1 M3: HALT;') + + def test_goto_missing_tokens(self): + with self.assertRaises(SyntaxError): + interpret('M1:GOTO :HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M2' + + 'M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: GOTO :HALT; M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3;' + + 'M2: GOTO M3' + + 'M3:HALT;') + + def test_goto_jump_not_defined(self): + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M2;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: GOTO M4; M3:HALT;') + + def test_halt_missing_tokens(self): + with self.assertRaises(SyntaxError): + interpret('M1:HALT M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: HALT M3:HALT;') + + def test_if_missing_tokens(self): + with self.assertRaises(SyntaxError): + interpret('M1: IF THEN GOTO M2; M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: IF x1 THEN GOTO M2; M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: IF x2 = THEN GOTO M2; M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: IF x0 = 0 GOTO M2; M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: IF x3 = 5 THEN M2; M2:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: IF THEN GOTO M3; M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: IF x1 THEN GOTO M2; M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: IF x2 = THEN GOTO M2; M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: IF x0 = 0 GOTO M2; M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1:GOTO M3; M2: IF x3 = 5 THEN M2; M3:HALT;') + + def test_line_missing_tokens(self): + with self.assertRaises(SyntaxError): + interpret('M1 GOTO M2; M2: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; GOTO M3; M3:HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2 GOTO M3; M3: HALT;') + with self.assertRaises(SyntaxError): + interpret('M1: GOTO M3; M2: M3; M3: HALT;') + + def test_end_without_halt(self): + with self.assertRaises(SyntaxError): + interpret('M1: x0:=2;') + + @mock.patch('whileinterpreter.input', side_effect=str_yes) + def test_infinite_loop(self, custom_input): + self.assertEqual(-1, interpret('M1: x1:=100000; M2: x1:=x1-1; M3: IF x1=0 THEN GOTO M5; M4: GOTO M1; M5:HALT;', + timeout=1)) + + def test_given_values(self): + self.assertEqual(5, interpret('M1: x0:=x1+0; M2: IF x2=0 THEN GOTO M6; M3: x0:=x0+1;' + + 'M4: x2:=x2-1; M5: GOTO M2; M6: HALT;', [2, 3])) + self.assertEqual(4, interpret('M1: x0:=x1+0; M2: IF x2=0 THEN GOTO M6; M3: x0:=x0+1;' + + 'M4: x2:=x2-1; M5: GOTO M2; M6: HALT;', [0, 4])) + self.assertEqual(1, interpret('M1: x0:=x0+1; M2: HALT;', [2,3,4])) + + def test_wrong_given_values(self): + with self.assertRaises(ValueError): + interpret('M1: x0:=2;', [-1]) + with self.assertRaises(ValueError): + interpret('M1: x0:=1;', [0.2]) + with self.assertRaises(ValueError): + interpret('M1: x0:=4;', ['EINS']) + + def test_homeomorphic_embedding(self): + with self.assertRaises(SyntaxError): + interpret('M1: x1:=1; M2: IF x1 = 0 THEN GOTO M5;' + 'M3: x1:=x1+1; M4: GOTO M2; M5: HALT;', timeout=0, debug=True) + with self.assertRaises(SyntaxError): + interpret('M1: x1:=100; M2: IF x1 = 0 THEN GOTO M5;' + 'M3: x1:=x1+1; M4: GOTO M2; M5: HALT;', timeout=0, debug=True) diff --git a/info4/kapitel-8/Interpreter/test_loop_interpreter.py b/info4/kapitel-8/Interpreter/test_loop_interpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..e14b136017e16d81264b9f9daa07c811553198ee --- /dev/null +++ b/info4/kapitel-8/Interpreter/test_loop_interpreter.py @@ -0,0 +1,261 @@ +from loopinterpreter import interpret +import unittest +from unittest import mock + + +def input_exit(prompt): + return 'EXIT' + + +def input_continue(prompt): + return '' + + +def init_without_tokens(self, regex_to_token, program): + self.regex_to_token = {} + self.program = program + self.current_position = 0 + + +class LOOPInterpreterTest(unittest.TestCase): + def test_assignment_default_zero(self): + self.assertEqual(0, interpret('x0:=x0 + 0')) + self.assertEqual(0, interpret('x0:=x1 + 0')) + self.assertEqual(0, interpret('x0:=x2 + 0')) + + def test_assignment_non_negative(self): + self.assertEqual(0, interpret('x0:=x0-1')) + self.assertEqual(0, interpret('x0:=x1-1')) + self.assertEqual(0, interpret('x0:=x2-6')) + + def test_assignment_number(self): + self.assertEqual(5, interpret('x0:=5')) + self.assertEqual(2, interpret('x0:=2')) + self.assertEqual(3, interpret('x0:=3')) + + def test_assignment_variable(self): + self.assertEqual(1, interpret('x0:=x0+1')) + self.assertEqual(4, interpret('x0:= 5; x0:=x0-1')) + self.assertEqual(1, interpret('x0:=x1-1; x0:=x0+1')) + + def test_assignment_wrong_syntax(self): + with self.assertRaises(SyntaxError): + interpret('x1:=x2') + with self.assertRaises(SyntaxError): + interpret('x1:=0+x2') + with self.assertRaises(SyntaxError): + interpret('x5:=-1+x4') + with self.assertRaises(SyntaxError): + interpret('x5:=-x3+x1') + with self.assertRaises(SyntaxError): + interpret('x5:=x1-x3') + with self.assertRaises(SyntaxError): + interpret('x2:=x1+x4') + with self.assertRaises(SyntaxError): + interpret('x2:=x1+2;') + with self.assertRaises(SyntaxError): + interpret('x1:=c') + with self.assertRaises(SyntaxError): + interpret('xi:=2') + with self.assertRaises(SyntaxError): + interpret('x0:=xj+1') + + def test_loop_assignment(self): + self.assertEqual(1, interpret('x1:=1; LOOP x1 DO x0:=1 END')) + self.assertEqual(4, interpret('x1:=2; LOOP x1 DO x0:=x0 + 2 END')) + + def test_loop_empty_assignment(self): + self.assertEqual(0, interpret('LOOP x1 DO x0:=1 END')) + self.assertEqual(0, interpret('x2:=2;LOOP x1 DO x0:=x2+1 END')) + + def test_loop_nested_assignment(self): + self.assertEqual(6, interpret('x1:=3; LOOP x1 DO x2:=x2+1; LOOP x2 DO x0:=x0+1 END END')) + self.assertEqual(3, interpret('x1:=3; x2:=3; LOOP x1 DO x2:=x2-1; LOOP x2 DO x0:=x0+1 END END')) + + def test_loop_forbidden_identifier(self): + with self.assertRaises(SyntaxError): + interpret('x1:=1; LOOP x1 DO x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; LOOP x1 DO x2:=x1 + 2 END') + + def test_loop_empty_forbidden_identifier(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x2 DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO x2:=x1 - 2 END') + + def test_loop_nested_forbidden_identifier(self): + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO LOOP x1 DO x0:=x0+1 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; x2:=2 LOOP x1 DO LOOP x2 DO x1:=2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; x2:=2 LOOP x1 DO LOOP x2 DO x2:=2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; x2:=2 LOOP x1 DO LOOP x2 DO x0:=x2+2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; x2:=2 LOOP x1 DO LOOP x2 DO x0:=x1-2 END END') + + def test_loop_nested_empty_forbidden_identifier(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO LOOP x2 DO x2:=2 END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO LOOP x2 DO x0:=x2+2 END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO LOOP x2 DO x0:=x1 + 0 END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO LOOP x2 DO x1:=2 END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO LOOP x1 DO x2:=2 END END') + + def test_loop_wrong_syntax(self): + with self.assertRaises(SyntaxError): + interpret('LOOP 2 DO x2:=5 END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; LOOP x1 DO x2:=5; END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; LOOP x1 DO; x2:=5 END') + with self.assertRaises(SyntaxError): + interpret('x1:=1; LOOP x1 DO x2:=5 END;') + + def test_assignment_with_loop(self): + self.assertEqual(2, interpret('x0:=2; LOOP x0 DO x1:=x1+1 END; x0:=x1+0')) + self.assertEqual(1, interpret('x1:=x1+1; LOOP x0 DO x1:=x1+1 END; x0:=x1+0')) + + def test_syntax_unnecessary_semicolon(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1 END;') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1;; x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('x1:=x1+1;; x1:=x1+1') + with self.assertRaises(SyntaxError): + interpret(';x1:=x1+1') + + def test_syntax_unnecessary_end(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1 END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1 END; x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('x1:=x1+1; END x1:=x1+1') + with self.assertRaises(SyntaxError): + interpret('END x1:=x1+1') + + def test_syntax_missing_semicolon(self): + with self.assertRaises(SyntaxError): + interpret('x0:=2 LOOP x0 DO x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1 x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO x1:=x1+1 x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=x1+1 END x0:=x1+0') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO x1:=x1+1 END x0:=x1+0') + + def test_syntax_missing_do(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP x1 x2:=2 END END') + with self.assertRaises(SyntaxError): + interpret('x0:=1; LOOP x0 DO LOOP x1 x2:=2 END END') + with self.assertRaises(SyntaxError): + interpret('x0:=1; x1:=2; LOOP x0 DO LOOP x1 x2:=2 END END') + + def test_syntax_missing_end(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP x1 DO x2:=2') + with self.assertRaises(SyntaxError): + interpret('x0:=5; LOOP x0 DO LOOP x1 DO x2:=2') + with self.assertRaises(SyntaxError): + interpret('x0:=4; x1:=7; LOOP x0 DO LOOP x1 DO x2:=2') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP x1 DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO LOOP x1 DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; x1:=3; LOOP x0 DO LOOP x1 DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('x0 := 2; LOOP x0 DO x1 := 1; x2 := x2 + 1') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1:=2; x2:=0') + + def test_syntax_missing_program(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP x1 DO END END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP x1 DO x2:=2; END') + + def test_syntax_missing_operator(self): + with self.assertRaises(SyntaxError): + interpret('x0:=x1 2') + with self.assertRaises(SyntaxError): + interpret('LOOP x2 DO x0:=x1 2 END') + with self.assertRaises(SyntaxError): + interpret('x2:=3; LOOP x2 DO x1:=x1 2 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x2 DO LOOP x3 DO x1:=x1 2 END END') + + def test_syntax_missing_equals(self): + with self.assertRaises(SyntaxError): + interpret('x1 2') + with self.assertRaises(SyntaxError): + interpret('x1 x2+2') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1 2 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO x1 2 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO x1 x2+3 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; LOOP x0 DO x1 x2-1 END') + + def test_syntax_missing_identifier(self): + with self.assertRaises(SyntaxError): + interpret('x1:=; LOOP x1 DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO x2:= END') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO x2:=x0+ END') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO LOOP DO x1:=x2+0 END END') + + def test_newlines(self): + self.assertEqual(5, interpret('''x2:=3; + x0:=x2+2''')) + self.assertEqual(2, interpret('x1:=x1-2;\n x0:=x1+2')) + + @mock.patch('loopinterpreter.input', side_effect=input_exit) + def test_break_exit(self, custom_input): + self.assertEqual(-1, interpret('x1:=2; BREAK x0:=2')) + self.assertEqual(-1, interpret('LOOP x1 DO BREAK x2:= 2 END')) + + @mock.patch('loopinterpreter.input', side_effect=input_continue) + def test_break_continue(self, custom_input): + self.assertEqual(4, interpret('x1:=2; LOOP x1 DO x0:=x0+2 BREAK END')) + + @mock.patch('lexer.Lexer.__init__', init_without_tokens) + def test_unknown_tokens(self): + with self.assertRaises(SyntaxError): + interpret('BLIBLABLUB') + + def test_given_values(self): + self.assertEqual(5, interpret('x0:=x1+0; LOOP x2 DO x0:=x0+1 END', [2, 3])) + self.assertEqual(4, interpret('x0:=x1+0; LOOP x2 DO x0:=x0+1 END', [0, 4])) + self.assertEqual(1, interpret('x0:=x0+1', [2,3,4])) + + def test_wrong_given_values(self): + with self.assertRaises(ValueError): + interpret('x0:=2;', [-1]) + with self.assertRaises(ValueError): + interpret('x0:=1;', [0.2]) + with self.assertRaises(ValueError): + interpret('x0:=4;', ['EINS']) \ No newline at end of file diff --git a/info4/kapitel-8/Interpreter/test_while_interpreter.py b/info4/kapitel-8/Interpreter/test_while_interpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..3fab6da7131f511c147a2913fb1bf849970437f8 --- /dev/null +++ b/info4/kapitel-8/Interpreter/test_while_interpreter.py @@ -0,0 +1,142 @@ +from whileinterpreter import interpret +from test_loop_interpreter import LOOPInterpreterTest +from unittest import mock + + +def str_yes(prompt): + return 'J' + + +class WHILEInterpreterTest(LOOPInterpreterTest): + def test_while_assignment(self): + self.assertEqual(1, interpret('x1:=1;\n WHILE x1!=0 DO\n x0:=1;\n x1:=x1-1 END')) + self.assertEqual(3, interpret('x1:=3; WHILE x1/=0 DO x0:=x0+1; x1:=x1-1 END')) + + def test_while_empty_assignment(self): + self.assertEqual(0, interpret('WHILE x1 != 0 DO x0:=2; x1:=x1-1 END')) + self.assertEqual(0, interpret('WHILE x1 /= 0 DO x0:=1 END')) + self.assertEqual(0, interpret('WHILE x1!=0 DO LOOP x2 DO x0:=3 END END')) + + def test_while_nested_assignment(self): + self.assertEqual(6, interpret('x1:=2; WHILE x1!=0 DO x2:=3;' + + 'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END')) + self.assertEqual(55, interpret('x1:=10; WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END')) + + def test_while_nested_empty_assignment(self): + self.assertEqual(0, interpret('WHILE x1!=0 DO x2:=3;' + + 'WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END; x1:=x1-1 END')) + self.assertEqual(0, interpret('WHILE x1!=0 DO LOOP x1 DO x0:=x0+1 END; x1:=x1-1 END')) + + def test_while_forbidden_identifier(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x1 != 0 DO x0:=x0+1 END END ') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x2 != 0 DO x1:=x0+1 END END ') + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x3 != 0 DO x0:=x1+1 END END ') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x1 != 0 DO x0:=x0+1 END END ') + with self.assertRaises(SyntaxError): + interpret('x1:=3; x2:=3; LOOP x1 DO WHILE x2 != 0 DO x1:=x0+1 END END ') + with self.assertRaises(SyntaxError): + interpret('x1:=2; x2:=4; LOOP x1 DO WHILE x2 != 0 DO x0:=x1+1 END END ') + with self.assertRaises(SyntaxError): + interpret('x1:=3; LOOP x1 DO WHILE x2 != 0 DO x1:=x0+1 END END ') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x2 != 0 DO x0:=x1+1 END END ') + + def test_while_wrong_syntax(self): + with self.assertRaises(SyntaxError): + interpret('x1:= 1; WHILE x1 /= 1 DO x0:=2 END') + with self.assertRaises(SyntaxError): + interpret('x1:= 2; WHILE x1 /= 1 DO x0:=2 END') + with self.assertRaises(SyntaxError): + interpret('x1:= 1; WHILE x1 /= 0 DO WHILE x1 /= 1 DO x0:=2 END END') + with self.assertRaises(SyntaxError): + interpret('WHILE false DO x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('WHILE x1>0 DO x1:=x1-1 END') + with self.assertRaises(SyntaxError): + interpret('WHILE 3>0 DO x0:=2 END') + + def test_syntax_missing_semicolon_while(self): + with self.assertRaises(SyntaxError): + interpret('x0:=2 WHILE x0!=0 DO x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('WHILE x0/= DO x1:=x1+1 x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('WHILE x0/=0 DO x1:=x1+1 x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('x0:=2; WHILE x0/=0 DO x1:=x1+1 x1:=x1+1 END') + with self.assertRaises(SyntaxError): + interpret('WHILE x0/=0 DO x1:=x1+1 END x0:=x1+0') + with self.assertRaises(SyntaxError): + interpret('x0:=2; WHILE x0!=0 DO x1:=x1+1; x0=x0-1 END x0:=x1+0') + with self.assertRaises(SyntaxError): + interpret('LOOP x0 DO WHILE x1!=0 DO x2:=2 x1:=0 END') + + def test_syntax_missing_identifier_while(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE /= 0 DO x0:=x0+2 END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE /= 0 DO x0:=x0+2 END') + + def test_syntax_missing_unequal_while(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x2 0 DO x0:=x0+2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x2 0 DO x0:=x0+2 END END') + + def test_syntax_missing_zero_while(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x2 != DO x0:=x0+2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x2 /= DO x0:=x0+2 END END') + + def test_syntax_wrong_number_while(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x2 /= 1 DO x0:=x0+2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x2 /= 3 DO x0:=x0+2 END END') + + def test_syntax_missing_do_while(self): + with self.assertRaises(SyntaxError): + interpret('LOOP x1 DO WHILE x2 != 0 x0:=x0+2 END END') + with self.assertRaises(SyntaxError): + interpret('x1:=2; LOOP x1 DO WHILE x2 /= 0 x0:=x0+2 END END') + with self.assertRaises(SyntaxError): + interpret('WHILE x1 != 0 x2:=2 END') + with self.assertRaises(SyntaxError): + interpret('x1:= 2; WHILE x1 != 0 x2:=2 END') + + def test_syntax_unnecessary_semicolon_while(self): + with self.assertRaises(SyntaxError): + interpret('x1:=2;; x0:=3') + with self.assertRaises(SyntaxError): + interpret('WHILE x1 != 0 DO x0:=2;;x2:=1 END') + with self.assertRaises(SyntaxError): + interpret('x0:=5;') + + @mock.patch('whileinterpreter.input', side_effect=str_yes) + def test_infinite_loop(self, custom_input): + self.assertEqual(-1, interpret('x1:=100000; WHILE x1 != 0 DO x0:=1; x1:=x1-1 END', timeout=1)) + + def test_given_values(self): + self.assertEqual(5, interpret('x0:=x1+0; WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END', [2, 3])) + self.assertEqual(4, interpret('x0:=x1+0; WHILE x2/=0 DO x0:=x0+1; x2:=x2-1 END', [0, 4])) + self.assertEqual(1, interpret('x0:=x0+1', [2,3,4])) + + def test_wrong_given_values(self): + with self.assertRaises(ValueError): + interpret('x0:=2', [-1]) + with self.assertRaises(ValueError): + interpret('x0:=1', [0.2]) + with self.assertRaises(ValueError): + interpret('x0:=4', ['EINS']) + + def test_homeomorphic_embedding(self): + with self.assertRaises(SyntaxError): + interpret('x1:=1; WHILE x1 != 0 DO x1:=x1+1 END', timeout=0, debug=True) + with self.assertRaises(SyntaxError): + interpret('''x1:=100; WHILE x1 != 0 DO x1:=x1-1 END; + x1 = 1; WHILE x1 != 0 DO x1:=x1+1 END''', timeout=0, debug=True) diff --git a/info4/kapitel-8/Interpreter/whileinterpreter.py b/info4/kapitel-8/Interpreter/whileinterpreter.py new file mode 100644 index 0000000000000000000000000000000000000000..d5121ca55993c1e397af364fef0342b756d9854b --- /dev/null +++ b/info4/kapitel-8/Interpreter/whileinterpreter.py @@ -0,0 +1,241 @@ +import lexer +from loopinterpreter import LOOPInterpreter, ErrorHandler +import re +import signal +from IPython.display import clear_output +from copy import deepcopy + +class Timeout: + def __init__(self, time): + self.time = time + + def __enter__(self): + if self.time > 0: + signal.signal(signal.SIGALRM, self.interrupt) + signal.alarm(self.time) + + def __exit__(self, exc_type, exc_value, exc_traceback): + signal.alarm(0) + + def interrupt(self, sig_num, stack_frame): + try: + clear_output(wait=True) + abort = input('''Die Funktion rechnet relativ lange. +Vielleicht liegt eine Endlosschleife vor. +Möchten sie abbrechen? [J,n]:''') + if abort.upper() in ['J', 'JA', 'Y', 'YES', '']: + raise KeyboardInterrupt + signal.alarm(self.time) + except EOFError: + pass + +class State: + def __init__(self, linenumber, values): + self.values = deepcopy(values) + self.linenumber = linenumber + + def less_or_equal(self, other): + if self.linenumber > other.linenumber: + return False + values1 = self.values + values2 = other.values + different_keys = [k for k in values1 if values1.get(k) != values2.get(k)] +\ + [k for k in values2 if values1.get(k) is None] + + for key in different_keys: + if values1.get(key) > 0 and (values2.get(key) is None or values2.get(key) < values1.get(key)): + return False + + return True + + +class WHILEInterpreter(LOOPInterpreter): + def __init__(self, timeout=60): + super().__init__() + self.regex_to_token = [(re.compile(r'\d+'), 'NUMBER'), + (re.compile(r'x\d+'), 'IDENTIFIER'), + (re.compile(r'\+'), 'PLUS'), + (re.compile(r'[−-]'), 'MINUS'), + (re.compile(r':=|≔'), 'ALLOCATION'), + (re.compile(r'/=|≠|!='), 'NOTEQUALS'), + (re.compile(r'LOOP'), 'LOOP'), + (re.compile(r'WHILE'), 'WHILE'), + (re.compile(r'DO'), 'DO'), + (re.compile(r'END'), 'END'), + (re.compile(r';'), 'SEMICOLON'), + (re.compile(r'BREAK'), 'BREAK'), + (re.compile(r'\s+', re.MULTILINE), 'WHITESPACE'), + (re.compile(r'[^\n]*'), 'UNKNOWN')] + self.timeout = timeout + + def process_program(self, forbidden_identifiers, current_token): + if current_token is None or current_token.k not in ['IDENTIFIER', 'LOOP', 'WHILE']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...), LOOP oder WHILE') + elif current_token.k == 'IDENTIFIER': + current_token = self.process_assignment(forbidden_identifiers, current_token) + elif current_token.k == 'LOOP': + current_token = self.process_loop(forbidden_identifiers, current_token) + elif current_token.k == 'WHILE': + current_token = self.process_while(forbidden_identifiers, current_token) + return current_token + + def verify_program(self, forbidden_identifiers, current_token): + if current_token is None or current_token.k not in ['IDENTIFIER', 'LOOP', 'WHILE']: + self.error_handler.handle_error('Keine passende Anweisung gefunden\n' + + 'Erwartet: IDENTIFIER (x0, x1, ...), LOOP oder WHILE') + elif current_token.k == 'IDENTIFIER': + current_token = self.verify_assignment(forbidden_identifiers, current_token) + elif current_token.k == 'LOOP': + current_token = self.verify_loop(forbidden_identifiers, current_token) + elif current_token.k == 'WHILE': + current_token = self.verify_while(forbidden_identifiers, current_token) + return current_token + + def process_while(self, forbidden_identifiers, current_token): + identifier_token = self.next_nonempty_token('WHILE', 'IDENTIFIER (x0, x1, ...)') + if not identifier_token.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in WHILE erwartet.') + if identifier_token.v in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_token.v + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('WHILE', 'UNGLEICH').k == 'NOTEQUALS': + self.error_handler.handle_error('UNGLEICH in WHILE erwartet.') + + zero_token = self.next_nonempty_token('WHILE', '0') + if not zero_token.k == 'NUMBER': + self.error_handler.handle_error('0 in WHILE erwartet.') + if not int(zero_token.v) == 0: + self.error_handler.handle_error('0 in WHILE erwartet.') + + if not self.next_nonempty_token('WHILE', 'DO').k == 'DO': + self.error_handler.handle_error('DO in WHILE erwartet.') + + if identifier_token.v in self.values: + while_value = int(self.values.get(identifier_token.v)) + else: + while_value = 0 + + saved_position = self.lex.current_position + saved_line = self.error_handler.line_number + + if while_value == 0: + end_found = False + while not end_found: + token = self.verify_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in WHILE erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + while not while_value == 0: + if self.test_homeomorphic_embedding: + new_state = State(self.lex.current_position, self.values) + for state in self.state_list: + if state.less_or_equal(new_state): + self.error_handler.handle_endless_loop() + self.state_list.append(new_state) + + self.lex.current_position = saved_position + self.error_handler.line_number = saved_line + end_found = False + while not end_found: + token = self.process_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in WHILE erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + while_value = int(self.values.get(identifier_token.v)) + + return self.next_token() + + def verify_while(self, forbidden_identifiers, current_token): + identifier_token = self.next_nonempty_token('WHILE', 'IDENTIFIER') + if not identifier_token.k == 'IDENTIFIER': + self.error_handler.handle_error('IDENTIFIER in WHILE erwartet.') + if identifier_token.v in forbidden_identifiers: + self.error_handler.handle_error('Identifier ' + identifier_token.v + + ' ist bereits in Loop vorhanden und darf nicht verwendet werden.') + if not self.next_nonempty_token('WHILE', 'UNGLEICH').k == 'NOTEQUALS': + self.error_handler.handle_error('UNGLEICH in WHILE erwartet.') + + zero_token = self.next_nonempty_token('WHILE', '0') + if not zero_token.k == 'NUMBER': + self.error_handler.handle_error('0 in WHILE erwartet.') + if not int(zero_token.v) == 0: + self.error_handler.handle_error('0 in WHILE erwartet.') + + if not self.next_nonempty_token('WHILE', 'DO').k == 'DO': + self.error_handler.handle_error('DO in WHILE erwartet.') + + end_found = False + while not end_found: + token = self.verify_program(forbidden_identifiers, self.next_token()) + if token is None or token.k not in ['SEMICOLON', 'END']: + self.error_handler.handle_error('SEMICOLON oder END in WHILE erwartet.') + elif token.k == 'SEMICOLON': + continue + elif token.k == 'END': + end_found = True + + return self.next_token() + + def interpret(self, program, values=None, test_homeomorphic_embedding=False): + try: + with Timeout(self.timeout): + self.lex = lexer.Lexer(self.regex_to_token, program) + self.error_handler = ErrorHandler(program, self) + self.test_homeomorphic_embedding = test_homeomorphic_embedding + self.state_list = [] + self.values = values + if values is None: + self.values = {} + forbidden_identifiers = [] + current_token = self.next_token() + while current_token is not None: + current_token = self.process_program(forbidden_identifiers, current_token) + if current_token is not None: + if not current_token.k == 'SEMICOLON': + self.error_handler.handle_error('Semicolon erwartet') + current_token = self.next_token() + if current_token is None: + self.error_handler.handle_error('Semikolons werden nur zur Trennung und nicht zum ' + + 'Abschluss von Programmen verwendet') + if 'x0' in self.values: + return self.values.get('x0') + return 0 + except KeyboardInterrupt: + print('Die Ausführung des Programms wurde unterbrochen.\n' + + 'Daher ist der Rückgabewert des Programms nicht definiert.') + return -1 + + +def interpret(program, value_list=None, timeout=60, debug=False): + """Funktion zum Ausführen eines WHILE-Programms. + :param program: WHILE-Programm als String 'x1:=10; x2:=8; x0:=x2+0; WHILE x1 /=0 DO x0:=x0+1; x1:=x1-1 END' + :param value_list: Array von Integern ([v1, ..., vn]). + Das WHILE-Programm startet mit diesen Werten in x1, ..., xn. + :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird. + Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife. + Ein Wert von 0 deaktiviert den Timeout. + :param debug: Boolean der angibt ob mit Homeomorphic Embedding auf mögliche Endlosschleifen geprüft werden soll. + :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem WHILE-Programm zurück. + :usage interpret('x1:=10; x2:=8; x0:=x2+0; WHILE x1 /=0 DO x0:=x0+1; x1:=x1-1 END')""" + interpreter = WHILEInterpreter(timeout) + values = None + if value_list is not None: + values = {} + for index, value in enumerate(value_list): + if not isinstance(value, int) or value < 0 or not int(value) == value: + raise ValueError("Variablen können nur natürliche Zahlen zugewiesen bekommen.") + values.update({'x' + str(index+1): value}) + return interpreter.interpret(program, values, debug) + + +if __name__ == '__main__': + help(interpret) diff --git a/info4/kapitel-8/LOOP-Programme.ipynb b/info4/kapitel-8/LOOP-Programme.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..3b282796b952439a3c33ecfae195789d4211bf8c --- /dev/null +++ b/info4/kapitel-8/LOOP-Programme.ipynb @@ -0,0 +1,159 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# LOOP-Programme\n", + "\n", + "Im Folgenden werden wir Konzepte von prozeduralen Programmiersprachen kennenlernen. Als erste einfache Programmiersprache betrachten wir LOOP.\n", + "Die Syntax solcher Programme ist definiert durch:\n", + "* $x_i := c$, $x_i := x_j + c$ und $x_i := x_j - c$ mit $i,j,c \\in \\mathbb{N}$ sind LOOP-Programme\n", + "* Falls $P_1$ und $P_2$ LOOP-Programme sind ist $P_1; P_2$ ein LOOP-Programm\n", + "* Falls $P$ ein LOOP-Programm ist und $x_i$ nicht in $P$ vorkommt, so ist auch $LOOP\\ x_i\\ DO\\ P\\ END$ ein LOOP-Programm." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Semantik von LOOP-Programmen lässt sich wie folgt verstehen:\n", + "* Wenn eine k-stellige Funktion $f(n_1,n_2,...,n_k)$ berechnet wird sind die Startwerte $n_1,...,n_k\\in\\mathbb{N}$ in den Variablen $x_1,...,x_k$.\n", + "* Die restlichen Variablen starten mit dem Wert 0.\n", + "* Zuweisungen $x_i := c$, $x_i := x_j + c$ werden wie üblich interpretiert. Bei $x_i := x_j - c$ wird $x_i$ auf 0 gesetzt, falls $c\\geq x_j$ ist.\n", + "* Bei $P_1; P_2$ wird erst $P_1$ und dann $P_2$ ausgeführt.\n", + "* Das Programm $P$ in $LOOP\\ x_i\\ DO\\ P\\ END$ wird so oft ausgeführt, wie der Wert von $x_i$ zu Beginn des LOOPs ist.\n", + "* Das Programm stoppt mit dem Wert $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine Funktion heißt LOOP-berechenbar, falls es ein LOOP-Programm gibt, das mit $n_1,...,n_k$ in den Variablen $x_1,...,x_k$ gestartet wird und mit $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$ endet.\n", + "Ein Beispiel dafür ist die Addition $f(n_1, n_2) = n_1 + n_2$:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function interpret in module __main__:\n", + "\n", + "interpret(program, value_list=None)\n", + " Funktion zum Ausführen eines LOOP-Programms.\n", + " :param program: LOOP-Programm als String 'x1 := 4; LOOP x1 DO x0:=x0+1 END'\n", + " :param value_list: Array von Integern ([v1, ..., vn]).\n", + " Das LOOP-Programm startet mit diesen Werten in x1, ..., xn.\n", + " :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem LOOP-Programm zurück.\n", + " :usage interpret('x1:=10; x2:=8; x0:=x2+0; LOOP x1 DO x0:=x0+1 END')\n", + "\n" + ] + } + ], + "source": [ + "%run Interpreter/loopinterpreter.py" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret('''\n", + "LOOP x1 DO\n", + " x2≔ x2 + 1\n", + "END;\n", + "x0≔ x2 + 0''', [3,6])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Für die Visualisierung und das Verständnis haben wir die Syntax um das Keyword BREAK ereitert.\n", + "Wenn dieses erreicht wird, wird der Zustand ausgegeben und man wird gefragt, ob fortgefahren oder abgebrochen werden soll.\n", + "Dabei werden Variablen, denen noch kein Wert zugewiesen wurde ignoriert.\n", + "Im folgenden Fall wird $x_0$ nicht verändet, da $x_2$ nie zugewiesen wurde und die Schleife somit nicht ausgeführt wird." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BREAK in Zeile 5\n", + "Aktueller Zustand:\n", + "Variable x1: 5\n", + "Variable x0: 2\n", + "Drücke ENTER zum Fotfahren oder schreibe EXIT zum Beenden:\n" + ] + }, + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret('''\n", + "x1:=5;\n", + "x0:=2;\n", + "LOOP x2 DO\n", + " x0:=1\n", + " BREAK\n", + "END\n", + "''')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/info4/kapitel-8/WHILE-Programme.ipynb b/info4/kapitel-8/WHILE-Programme.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..ead34dc0e28e00b39260124f176f9f1023cb5628 --- /dev/null +++ b/info4/kapitel-8/WHILE-Programme.ipynb @@ -0,0 +1,149 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# WHILE-Programme\n", + "\n", + "Um LOOP-Programme zu erweitern führen wir eine WHILE-Schleife ein und erhalten damit die WHILE-Programme.\n", + "Die Syntax solcher WHILE-Programme ist definiert durch:\n", + "* Jedes LOOP-Programm ist ein WHILE-Programm\n", + "* Falls $P_1$ und $P_2$ WHILE-Programme sind ist $P_1; P_2$ ein WHILE-Programm\n", + "* Falls $P$ ein WHILE-Programm ist, so ist auch $WHILE\\ x_i\\neq 0\\ DO\\ P\\ END$ ein WHILE-Programm." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Die Semantik von WHILE-Programmen ist analog zu der von LOOP-Programmen zu verstehen.\n", + "Der einzige Unterschied sind die WHILE-Schleifen.\n", + "Das Programm P in einer WHILE-Schleife wird solange wiederholt, wie $x_i \\neq 0$ ist.\n", + "Dabei ist zu beachten, dass $x_i$ in P vorkommen sollte, da es sonst nicht verändert wird.\n", + "Dies ist ein Unterschied zu LOOP-Programmen, da $x_i$ in dem entsprechenden LOOP nicht verwendet werden darf." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Eine Funktion heißt WHILE-berechenbar, falls es ein WHILE-Programm gibt, das mit $n_1,...,n_k$ in den Variablen $x_1,...,x_k$ gestartet wird und mit $f(n_1,n_2,...,n_k)$ in der Variablen $x_0$ endet, falls $f(n_1,n_2,...,n_k)$ definiert ist. Andernfalls stoppt das WHILE-Programm nicht.\n", + "Ein Beispiel dafür ist die 2er-Potenz $f(n) = 2^n$:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Help on function interpret in module __main__:\n", + "\n", + "interpret(program, value_list=None, timeout=60)\n", + " Funktion zum Ausführen eines WHILE-Programms.\n", + " :param program: WHILE-Programm als String 'x1:=10; x2:=8; x0:=x2+0; WHILE x1 /=0 DO x0:=x0+1; x1:=x1-1 END'\n", + " :param value_list: Array von Integern ([v1, ..., vn]).\n", + " Das WHILE-Programm startet mit diesen Werten in x1, ..., xn.\n", + " :param timeout: Zeit nach der die Ausführung eines Programms pausiert wird.\n", + " Gibt eine Möglichkeit zum Abbrechen bei einer Endlosschleife.\n", + " Ein Wert von 0 deaktiviert den Timeout.\n", + " :returns integer: Gibt bei Abbruch -1 und sonst den Wert von x0 nach dem WHILE-Programm zurück.\n", + " :usage interpret('x1:=10; x2:=8; x0:=x2+0; WHILE x1 /=0 DO x0:=x0+1; x1:=x1-1 END')\n", + "\n" + ] + } + ], + "source": [ + "%run Interpreter/whileinterpreter.py" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1024" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret(''' \n", + "x0:=1;\n", + "WHILE x1 /= 0 DO\n", + " x2:=x0+0;\n", + " LOOP x2 DO\n", + " x0:=x0+1\n", + " END;\n", + " x1:=x1-1\n", + "END''', [10])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ein weiteres Beispiel ist die Funktion f(n) = n mod 2" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "interpret('''\n", + "x1:=16;\n", + "x2:=x1-1;\n", + "WHILE x2!=0 DO\n", + " x1:=x1-2;\n", + " x2:=x2-2\n", + "END;\n", + "x0:=x1+0\n", + "''')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}