{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial on Markov Order\n", "\n", "by [*Kardi Teknomo*](https://people.revoledu.com/kardi/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import IdealFlow.Network as net # import package.module as alias" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 2., 0., 0., 0.],\n", " [0., 0., 0., 3., 0.],\n", " [0., 1., 0., 0., 2.],\n", " [0., 0., 3., 0., 0.],\n", " [2., 0., 0., 0., 0.]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#Generate random ideal flow network for a given number of nodes.\n", "max_capacity = 9\n", "num_nodes = 5\n", "n = net.IFN(\"IFN\") # create new network\n", "C = n.rand_capacity(num_nodes, max_capacity)\n", "F = n.capacity_to_ideal_flow(C)\n", "scaling = n.global_scaling(F, 'int')\n", "n.equivalent_ifn(F, scaling)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'a': {'b': np.float64(0.15384615384615397)}, 'b': {'d': np.float64(0.2307692307692309)}, 'c': {'b': np.float64(0.07692307692307696), '#z#': np.float64(0.1538461538461539)}, 'd': {'c': np.float64(0.23076923076923103)}, '#z#': {'a': np.float64(0.1538461538461538)}}\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "generated trajectory: [] \n", "\n", "trajSuper1\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper2\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper3\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper4\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper5\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper6\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper7\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper8\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper9\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper10\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper11\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "trajSuper12\n", " []\n", "back to traj1\n", " [] \n", "\n", "\n", "generated trajectory: ['a', np.str_('b'), np.str_('d'), np.str_('c'), np.str_('#z#'), np.str_('a')] \n", "\n", "trajSuper1\n", " ['a', 'b', 'd', 'c', '#z#', 'a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper2\n", " ['a|b', 'b|d', 'd|c', 'c|#z#', '#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper3\n", " ['a|b|d', 'b|d|c', 'd|c|#z#', 'c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper4\n", " ['a|b|d|c', 'b|d|c|#z#', 'd|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper5\n", " ['a|b|d|c|#z#', 'b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper6\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper7\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper8\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper9\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper10\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper11\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n", "trajSuper12\n", " ['a|b|d|c|#z#|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', '#z#', 'a'] \n", "\n", "\n" ] } ], "source": [ "n.set_matrix(F,['a','b','c','d','#z#'])\n", "print(n)\n", "n.show();\n", "\n", "traj1=n.generate('#z#')\n", "traj2=n.generate('a')\n", "trajectories = [traj1,traj2]\n", "for traj in trajectories:\n", " print('generated trajectory:',traj,'\\n')\n", " for ord in range(1,13):\n", " trajSuper=n.order_markov_higher(traj,order=ord)\n", " print('trajSuper'+str(ord)+'\\n',trajSuper)\n", " tr1=n.order_markov_lower(trajSuper)\n", " print('back to traj1\\n',tr1,'\\n')\n", " print()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'a': {'b': np.float64(0.15384615384615397)}, 'b': {'d': np.float64(0.2307692307692309)}, 'c': {'b': np.float64(0.07692307692307696), 'e': np.float64(0.1538461538461539)}, 'd': {'c': np.float64(0.23076923076923103)}, 'e': {'a': np.float64(0.1538461538461538)}}\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAGqCAYAAACWIEfsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgkElEQVR4nO3deZxN9R/H8ded1ZixM/ZBxjpkyVKoKEppsaWiUFFI0q9d2uxtUlEKlbJWlnZZikKKJJpBlrFWtsIMs9/v74/r3maYfebOuXfu+/l4zOPee873nPO57pjzud/VZowxiIiIiM/yszoAERERsZaSARERER+nZEBERMTHKRkQERHxcUoGREREfJySARERER+nZEBERMTHKRkQERHxcUoGREREfJySARERER+nZEBERMTHKRkQ8WBnz54lIiICm81GjRo1SEhIsDokKSQpKSlERkZis9moUqUKp06dsjok8WFKBsQyzz33HDabzfWzb9++XJXLy8/AgQNzfc7HH388T/GnP3bq1Kl5fPe5M27cOA4ePAjA2LFjCQkJcct1PFVcXBzff/89U6ZMoX///kRFRREQEOD6d69du3aRx3T48GFeeOEF2rdvT/Xq1QkODqZ69eq0b9+eF154gcOHD+fqPIGBgYwfPx6AI0eO8Oyzz7ozbJHsGRGLPPvsswZw/cTGxuaqXF5+BgwYkOtzhoSEmIMHD+Y6/vTHvvHGG/n4F8je/v37TXBwsAFMZGSkSU1NLfRreLL69esbm82W7edbq1atIo3prbfeMqGhodnGFBYWZqZPn56r89ntdtOkSRMDmICAALNr1y43vwORzAW4L80QcY8rrrgi19+QmzZtmuvzJiQk8OyzzzJr1qz8hlaonnvuOZKSkgB4/PHH8ff3tziiovXHH39YHUIGY8aMueDbe7169ahWrRqHDh1iz549AMTHxzNkyBCOHTvG6NGjsz2nzWbjiSee4I477iA1NZVnnnmGefPmue09iGTJ6mxEfFd+awayKleQazt//P39TXR0dK7OgRtrBvbt22f8/f0NYCpWrGgSExML9fzewPlvGxoaatq1a2ceeOAB895775muXbsWec3A0qVLM3zejRs3Nr/88kuGMhs3bjSNGjXKUO7TTz/N8dwpKSmmatWqBjA2m8388ccf7nobIllSnwHxeaVKlaJKlSoApKWl8eST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pmYCydLhw4epUaMG4Jj9zfmHVMSbHTx4kPr165OYmOjatn79ei677DILo3KflJQUgoKCADhy5IirL4FIeqoZkCw5E4Fvv/1WiYAUGzVr1iQhIYFDhw65pvBt164dNpuNtWvXWhxd4QsMDOSLL74AoHLlyhZHI55KyYBk6qGHHgIcbaydOnWyOBqRwle9enXi4uL4888/XRP1XH755dhsNtasWWNxdIWrW7du1K5dG/hvZJBIemomkAvs37/f9YcjLS0NPz/ljFL8HTlyhIsvvpijR4+6tq1cuZKrr77awqgKT2pqqmt+kL///lu1BJKB/srLBZyJwNq1a5UIiM+oXLkyR44c4ejRo1SrVg2Azp07Y7PZWL58ucXRFVxAQADLli0DoEqVKhZHI55Gf+klg2HDhgGONtT27dtbHI1I0atUqRKHDx/m2LFjREREAHDttddis9n4+uuvLY6uYK699lrX3AtPP/20xdGIJ1Ezgbjs3buXunXrAmC327HZbBZHJGK9f/75h9atW7N3717Xts8++4wbb7zRwqjyL31zwZ9//umaR0R8m2oGxMWZCPz0009KBETOKV++PHv27OHff/+lQYMGgGP8vs1mY+nSpdYGlw8BAQGsWLECwNUcIqJkQAC45557ALjqqqto06aNxdGIeJ6yZcuyY8cOTp486VolsUePHthsNj755BOLo8ubzp0707hxYwCefPJJi6MRT6BmAuGPP/5wfeNR84BI7sTFxXHFFVewZcsW17YFCxZw6623WhdUHqSlpbmmFz906JBrpkLxTaoZEFcisHnzZiUCIrlUqlQpfv31V+Li4mjdujUAt912GzabjTlz5lgcXc78/f359ttvgf8mGBPfpWTAx/Xr1w9wTErSokULi6MR8T5hYWH8/PPPnDlzhnbt2gFw5513YrPZmD17tsXRZa9Tp040a9YMgEcffdTiaMRKaibwYTExMURFRQFqHhApLAkJCXTt2pXvv//etW3mzJmufjmexm63u6YbP3DgADVr1rQ4IrGCagZ8lDHGlQhs3bpViYBIIQkJCWHNmjUkJCRw1VVXATBo0CBsNhtvv/22xdFdyM/PzzX9snNeBfE9SgZ8VO/evQHo2bMnTZs2tTgakeKnRIkSrFq1isTERK699loAhgwZgs1mY+rUqRZHl9EVV1xBq1atABg5cmSujlGlcvGi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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "generated trajectory: ['a', np.str_('b'), np.str_('d'), np.str_('c'), np.str_('e'), np.str_('a')] \n", "\n", "trajSuper1\n", " ['a', 'b', 'd', 'c', 'e', 'a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper2\n", " ['a|b', 'b|d', 'd|c', 'c|e', 'e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper3\n", " ['a|b|d', 'b|d|c', 'd|c|e', 'c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper4\n", " ['a|b|d|c', 'b|d|c|e', 'd|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper5\n", " ['a|b|d|c|e', 'b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper6\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper7\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper8\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper9\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper10\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper11\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "trajSuper12\n", " ['a|b|d|c|e|a']\n", "back to traj1\n", " ['a', 'b', 'd', 'c', 'e', 'a'] \n", "\n", "\n", "generated trajectory: ['b', np.str_('d'), np.str_('c'), np.str_('b')] \n", "\n", "trajSuper1\n", " ['b', 'd', 'c', 'b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper2\n", " ['b|d', 'd|c', 'c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper3\n", " ['b|d|c', 'd|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper4\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper5\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper6\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper7\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper8\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper9\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper10\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper11\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n", "trajSuper12\n", " ['b|d|c|b']\n", "back to traj1\n", " ['b', 'd', 'c', 'b'] \n", "\n", "\n" ] } ], "source": [ "n.set_matrix(F)\n", "print(n)\n", "n.show();\n", "\n", "traj1=n.generate('a')\n", "traj2=n.generate('b')\n", "trajectories = [traj1,traj2]\n", "for traj in trajectories:\n", " print('generated trajectory:',traj,'\\n')\n", " for ord in range(1,13):\n", " trajSuper=n.order_markov_higher(traj,order=ord)\n", " print('trajSuper'+str(ord)+'\\n',trajSuper)\n", " tr1=n.order_markov_lower(trajSuper)\n", " print('back to traj1\\n',tr1,'\\n')\n", " print()" ] } ], "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }