{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "import pandas as pd\n", "\n", "import numpy as np\n", "from __future__ import division\n", "import itertools\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "import logging\n", "logger = logging.getLogger()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "17 Amortized Analysis\n", "============\n", "\n", "In an __amortized analysis__, we averget the time required to perform a sequence of data-structure operations over all the operations performed.\n", "\n", "Amortized analsis differs from average-case analysis in that probability is not involved; an amortized analysis guarantees the _average performance of each operation in the worst case__.\n", "\n", "Bear in mind that the charges assigned during an amortized analysis are for analysis purposes only.\n", "\n", "When we perform an amortized analysis, we often gain insight into a particular data structure, and this insight can help us optimize the design." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 17.1 Aggregate analysis\n", "We show that for all $n$, a sequence of $n$ operations takes worst-case time $T(n)$ in total.\n", "\n", "##### Stack operations\n", "PUSH $geq$ POP + MULTIPOP \n", "$1 \\times O(n) = O(n)$\n", "\n", "##### Incrementing a binary counter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(plt.imread('./res/fig17_2.png'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, for $i = 0, 1, \\dotsc, k-1$, bit $A[i]$ flips $\\lfloor \\frac{n}{2^i} \\rfloor$ times in a sequence of $n$ INCREMENT operations on an initially zero counter.\n", "\n", "\\begin{align}\n", " \\sum_{i=0}^{k-1} \\lfloor \\frac{n}{2^i} \\rfloor &< n \\sum_{i=0}^{\\infty} \\frac{1}{2^i} \\\\\n", " &= 2n\n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 17.2 The accounting method\n", "**credit**: the cost that an operation's amortized cost $\\hat{c_i}$ exceeds its actual cost $c_i$.\n", "\n", "requriments: $$\\sum_{i=1}^{n} \\hat{c_i} \\geq \\sum_{i=1}^{n} c_i$$\n", "\n", "\n", "##### Stack operations\n", "| | $c_i$ | $\\hat{c_i}$ |\n", "|------|-------|-------------|\n", "| PUSH | 1 | 2 |\n", "| POP | 1 | 0 |\n", "|MULTIPOP| min(k,s) | 0 |\n", "\n", "$2 \\times O(n) = O(n)$\n", "\n", "\n", "##### Incrementing a binary counter\n", "set a bit to 1: 2 \n", "set a bit to 0: 0\n", "\n", "The INCREMENT procedure sets at most one bit, $2 \\times O(n) = O(n)$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 17.3 The potential method\n", "Let $D_i$ be the data structure that results after applying the $i$th operation to data structure $D_{i-1}$.\n", "\n", "**potential function $\\phi$**: maps each data structure $D_i$ to a real number $\\phi(D_i)$.\n", "\n", "$\\hat{c_i} = c_i + \\phi(D_i) - \\phi(D_{i-1})$ \n", "hence, the total amortized cost of the $n$ operations is:\n", "$$\\sum_{i=1}^n \\hat{c_i} = \\sum_{i=1}^n c_i + \\phi(D_n) - \\phi(D_0)$$\n", "\n", "Different potential functions may yield different amortized costs yet still be upper bounds on the actual costs. The best potential function to use depends on the disired time bounds.\n", "\n", "\n", "##### Stack operations\n", "define: $\\phi$ to be the number of objects in the stack.\n", "\n", "for PUSH: \n", "\\begin{align}\n", " \\hat{c_i} &= c_i + \\phi(D_i) - \\phi(D_{i-1}) \\\\\n", " &= 1 + (s+1) - s \\\\\n", " &= 2\n", "\\end{align}\n", "\n", "for POP: \n", "\\begin{align}\n", " \\hat{c_i} &= c_i + \\phi(D_i) - \\phi(D_{i-1}) \\\\\n", " &= 1 + (s-1) - s \\\\\n", " &= 0\n", "\\end{align}\n", "\n", "for MULTIPOP: \n", "\\begin{align}\n", " \\hat{c_i} &= c_i + \\phi(D_i) - \\phi(D_{i-1}) \\\\\n", " &= k + (s-k) - s \\\\\n", " &= 0\n", "\\end{align}\n", "\n", "\n", "##### Incrementing a binary counter\n", "define: $\\phi$ to be $b_i$, the number of 1s in the counter after the $i$th operation.\n", "\n", "Suppose: the $i$th INCREMENT operation reset $t_i$ bits.\n", "\n", "for INCREMENT:\n", "\\begin{align}\n", " \\hat{c_i} &= c_i + \\phi(D_i) - \\phi(D_{i-1}) \\\\\n", " &= (t_i + 1) + (b_{i-1} - t_i + 1) - b_{i-1} \\\\\n", " &= 2 \n", "\\end{align}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 17.4 Dynamic tables\n", "**load factor**: $$\\alpha(T) = \\frac{\\|\\text{items of T}\\|}{\\|T\\|}$$ \n", "\n", "#### 17.4.1 Table expansion\n", "insert an item into a full table, we expand the table with twice spaces.\n", "\n", "The cost of the $i$th operation is: \n", "\$$\n", " c_i = \\begin{cases}\n", " i \\quad & \\text{expand: if i - 1 is an exact power of 2} \\\\\n", " 1 \\quad & \\text{otherwise} \n", " \\end{cases}\n", "\$$\n", "\n", "The total cost of $n$ TABLE-INSERT operations is therefore:\n", "\\begin{align}\n", " \\sum_{i=1}^{n} c_i &\\leq n + \\sum_{j=0}^{\\lfloor \\lg n \\rfloor} 2^j \\\\\n", " &< n + 2n \\\\\n", " &= 3n\n", "\\end{align}\n", "\n", "#### 17.4.2 Table expansion and contraction\n", "Halve the table size when deleting an item causes the table to become less than 1/4 full, rather than 1/2 full as before(引起振荡).\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }