{ "cells": [ { "cell_type": "markdown", "metadata": { "toc": "true" }, "source": [ "# Table of Contents\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# The Push-relabel Algorithm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Push-relabel algorithmを実装してみる。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "code_folding": [ 0 ], "collapsed": true }, "outputs": [], "source": [ "# 前回作った\n", "def makeResidualGraph(G):\n", " '''\n", " Input: a graph G\n", " Output: its residual graph Gf\n", " '''\n", " Gf = G.copy()\n", " edgeList = G.edges()\n", " \n", " for edge in edgeList:\n", " # Initialize flow\n", " Gf[edge[0]][edge[1]]['flow'] = 0\n", " \n", " # 逆向きのedgeがないものは追加\n", " if not (edge[1], edge[0]) in edgeList:\n", " Gf.add_edge(edge[1],edge[0])\n", " Gf[edge[1]][edge[0]]['capacity'] = Gf[edge[0]][edge[1]]['flow']\n", " Gf[edge[1]][edge[0]]['flow'] = 0\n", " \n", " return Gf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialization" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "code_folding": [ 0 ], "collapsed": true }, "outputs": [], "source": [ "def Initialize(G, s, t):\n", " '''\n", " Inputs:\n", " G: a residual graph\n", " V: vertices\n", " height\n", " excess\n", " E: edges\n", " flow(preflow)\n", " capacity\n", " NB: flow <= capacity\n", " s: a start point\n", " t: an end point\n", " Output:\n", " None\n", " \n", " Initialize the height and excess of each vertex.\n", " '''\n", " for v in G.nodes():\n", " G.node[v]['excess'] = 0\n", "\n", " for v in G.nodes():\n", " # 始点以外の点について\n", " if v != s:\n", " G.node[v]['height'] = 0\n", " # G.node[v]['excess'] = 0\n", " for p in G.neighbors(v):\n", " G[v][p]['flow'] = 0\n", " # 始点について\n", " else:\n", " # 始点の高さをnに\n", " G.node[v]['height'] = G.number_of_nodes() # n\n", " # 始点から出る枝のpreflowをcapacityギリギリに\n", " # このとき、始点に隣接する点のexcessを更新\n", " for p in G.neighbors(v):\n", " G[v][p]['flow'] = G[v][p]['capacity']\n", " # backward edgeのcapacityの更新\n", " G[p][v]['capacity'] = G[v][p]['flow']\n", " G.node[p]['excess'] = G[v][p]['flow']" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "code_folding": [ 0 ], "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgMAAAFkCAYAAAC9wjgoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X18zfX/x/HH2Q7mOtcqiVmbWa5CSJSLFC19i3yVKMpV\nIkQ3iUq2r8IqrEzkS8hXvvrmJ0R8+UbIdS42m7GURCIXE7M5n98fb8eMXeFsZ9vneb/ddrN9Pp/z\nOa/V2ec8z/vzvnBYlmUhIiIituXj7QJERETEuxQGREREbE5hQERExOYUBkRERGxOYUBERMTmFAZE\nRERsTmFARETE5hQGREREbE5hQERExOYUBkRERGxOYUBERMTmFAZERERsTmFARETE5hQGREREbE5h\nQERExOYUBkRERGxOYUBERMTmFAZERERsTmFARETE5hQGREREbE5hQERExOYUBkRERGxOYUBERMTm\nFAZERERsTmFARETE5hQGREREbE5hQERExOYUBkRERGxOYUBERMTmFAZERERsTmFARETE5hQGRERE\nbE5hQERExOYUBkRERGxOYUBERMTmFAZERERsTmFARETE5hQGREREbE5hQERExOYUBkRERGxOYUBE\nRMTmFAZERERsTmFARETE5hQGREREbE5hQERExOYUBkRERGxOYUBERMTmFAZERERsTmFARETE5hQG\nREREbE5hQERExOYUBkRERGxOYUBERMTmFAZERERszuntAkQkf0hMTCQ+Pp6kpCSKFClCQEAAJUqU\n8HZZIuIBCgMikqHo6GiioqL4dulSYg8cwLKsy/scDgdB/v481L49ffv2pVatWl6sVERuhsO68q9b\nRARISEjgpT59+Obbb6nodNIxJYVGQC2gGPAXEA1sBhY6nfyeksIjDz3Ex1OnUr16dW+WLiI3QGFA\nRNKYPn06gwYMoHxKCv9ISaETUDiT4y8A/wZedzo57nTy4eTJvPjii7lTrIh4hDoQishl4eHh9OrV\ni6fPn2dXSgrPkHkQ4NL+Z4DdKSk8ff48vXr1Ijw8POeLFRGPUcuAiACmRaBXr16MAUbexHnGAG9e\nOt8LL7zgmeJEJEcpDIgICQkJ1K5Vi6fPn2faTZ7LAnoD8/z82BUdrT4EIvmAwoCI0K5tW2JWr2ZX\nSgolPXC+00Btp5NaLVuybMUKD5xRRHKSwoCIzUVHRxMSEsJczL1/T/kc6Hrp/MHBwR48s4h4mjoQ\n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\nerMbdAQqOp1MmTLF47WLiGcpDIjYWOHChTl+5Ah/Bwpfsd0BNMMEALe1wBOX9q2/tG0HcBq4P51z\nF43rJWAAAARjSURBVAE6pqSwctkyj9ctIp6lMCBiY2fOnCH2wAEapbOvOebWwLlLP68D2gN1SQ0J\n7taC9MIAmFsKe/fvJzExMYMjRCQvUBgQsbH9+/djWRa10tnXHEjG3AaIA45d2taC1DCwDjMr4S0Z\nnD8EM7QxPj7eo3WLiGcpDIjYWFJSEmCmGL5aQ8AP029gLVARCMAEgk3AhUvbm2dy/qJXPY+I5E1O\nbxcgIt5TpEgRwKw1cLVCwL2YMFCV1Df95kASMBc4imkpyIj7FoP7eUQkb1LLgIiNBQQE4HA4yGjN\nwebAD8AaUsNAOaAm8B6mM2FmLQN7MAsiBQQEeKZgEckRCgMiNlaiRAmC/P3ZnMH+5phP97+Q9k2/\nBaYfQTXgtkzOvwWoWaMGJUqU8EC1IpJTFAZEbO6h9u1Z6HRyIZ199wG+mEmE6l6xvTmmVSCzWwRJ\nmOWN27Rr57FaRSRnaG0CEZuLjo4mJCSEucAzHjzv50DXS+fXSoUieZvCgIjQrm1bYlavZldKynUt\nW5yR00Btp5NaLVuybMUKD5xRRHKSwoCIkJCQQO1atXj6/Hmm3eS5LKA3MM/Pj13R0VSvXt0DFYpI\nTlKfARGhevXqfDh5MtOBsJs4j3Xp8dOBiZGRCgIi+YTmGRARAF588UWOHj3KyJEjOYhZhvh6bhmc\nBl7FBIHw8HBeeOGFnChTRHKAbhOISBrTp09n0IABlEtJYWxKCp1Iu4jR1ZKAhcDrTifHnU4mRkYq\nCIjkMwoDInKNhIQEXurTh2++/ZaKTicdU1JoiFlroChm7oE9mHkEFjqd/J6SwiMPPcTHU6fq1oBI\nPqQwICIZio6OJioqipXLlrH30qJGbg6Hg5o1atCmXTv69eun4YMi+ZjCgIhkS2JiIvHx8SQlJVGk\nSBECAgI0s6BIAaEwICIiYnMaWigiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjan\nMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2pzAgIiJi\ncwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIi\nIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2pzAg\nIiJicwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMK\nAyIiIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2\npzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIi\nYnMKAyIiIjanMCAiImJzCgMiIiI2pzAgIiJicwoDIiIiNqcwICIiYnMKAyIiIjb3/8JdT1NDbuw8\nAAAAAElFTkSuQmCC\n", "text/plain": [ "