From bcf7806987f8b5dd00dfca1cc442a4f1be76f632 Mon Sep 17 00:00:00 2001 From: Peter Norvig Date: Mon, 16 Feb 2026 22:20:47 -0800 Subject: [PATCH] Python 3 for convex hull --- ipynb/Convex Hull.ipynb | 1396 ++++++++++++--------------------------- 1 file changed, 432 insertions(+), 964 deletions(-) diff --git a/ipynb/Convex Hull.ipynb b/ipynb/Convex Hull.ipynb index 309d0b2..85c6cbe 100644 --- a/ipynb/Convex Hull.ipynb +++ b/ipynb/Convex Hull.ipynb @@ -11,6 +11,8 @@ } }, "source": [ + "
Peter Norvig
2017, updated 2026
\n", + "\n", "# The Convex Hull Problem" ] }, @@ -27,9 +29,9 @@ "source": [ "Pound a bunch of nails into a board, then stretch a rubber band around them and let the rubber band snap taut, like this:\n", "\n", - "\n", + "![](https://ds055uzetaobb.cloudfront.net/uploads/tantSbEgDe-ch2.gif)\n", "\n", - "The rubber band has traced out the *convex hull* of the set of nails. It turns out this is an important problem with applications in computer graphics, robot motion planning, geographical information systems, ethology, and other areas.\n", + "The rubber band has traced out the **convex hull** of the set of nails. It turns out this is an important problem with applications in computer graphics, robot motion planning, geographical information systems, ethology, and other areas.\n", "More formally, we say that:\n", "\n", "*Given a finite set, **P**, of points in a plane, the convex hull of **P** is a polygon, **H**, such that:*\n", @@ -39,13 +41,17 @@ "- **H** *is convex: a line segment joining any two vertexes of **H** either is an edge of **H** or lies inside **H**.*\n", "\n", "\n", - "In this notebook we develop an algorithm to find the convex hull (and show examples of how to use `matplotlib` plotting). The first thing to do is decide how we will represent the objects of interest:\n", + "In this notebook we develop an algorithm to find the convex hull. The first thing to do is decide how we will represent the objects of interest.\n", "\n", - "- **Point**: We'll define a class such that `Point(3, 4)` is a point where `p.x` is 3 and `p.y` is 4.\n", - "- **Set of Points**: We'll use a Python set: `{Point(0,0), Point(3,4), ...}`\n", - "- **Polygon**: We'll represent a polygon as an ordered list of vertex points.\n", + "# Points, Sets of Points, and Polygons\n", "\n", - "First, get the necessary imports done:" + "Here are the types I want to define:\n", + "\n", + "- **Point**: a class such that `Point(3, 4)` returns a point `p` such that `p.x` is 3 and `p.y` is 4.\n", + "- **Set of Points**: a Python set: `{Point(0,0), Point(3,4), ...}` The function `Points(n)` will return a set of `n` random points.\n", + "- **Polygon**: an ordered list of vertex points.\n", + "\n", + "First, get the necessary imports done, then implement the three types:" ] }, { @@ -55,6 +61,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -62,33 +71,12 @@ }, "outputs": [], "source": [ - "from __future__ import division, print_function\n", - "\n", - "%matplotlib inline \n", - "import matplotlib.pyplot as plt\n", "import collections\n", + "import math\n", + "import matplotlib.pyplot as plt\n", "import random\n", - "import math" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "# Points and Sets of Points\n", - "\n", - "I'll define the class `Point` as a named tuple of `x` and `y` coordinates, and `Points(n)` as a function that creates a set of *n* random points. \n", - "\n", - "There are two complications to the function `Points(n)`:\n", - "1. A second optional argument is used to set the random seed. This way, the same call to `Points` will return the same result each time. That makes it easier to reproduce tests. If you want different sets of points, just pass in different values for the seed.\n", - "2. Since `matplotlib` plots on a 3×2 rectangle by default, the points will be uniformly sampled from a 3×2 box (with a small border of 0.05 on each edge to prevent the points from bumping up against the edge of the box)." + "import re\n", + "import time" ] }, { @@ -98,6 +86,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -105,13 +96,12 @@ }, "outputs": [], "source": [ - "Point = collections.namedtuple('Point', 'x, y')\n", + "Point = collections.namedtuple('Point', 'x, y')\n", + "Polygon = list[Point]\n", "\n", - "def Points(n, seed=42):\n", - " \"Generate n random points within a 3 x 2 box.\"\n", - " random.seed((n, seed))\n", - " b = 0.05 # border\n", - " return {Point(random.uniform(b, 3-b), random.uniform(b, 2-b)) \n", + "def Points(n: int) -> set[Point]:\n", + " \"\"\"Generate n random points within a unit square.\"\"\"\n", + " return {Point(random.random(), random.random())\n", " for _ in range(n)}" ] }, @@ -122,6 +112,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -131,9 +124,9 @@ { "data": { "text/plain": [ - "{Point(x=0.15172583449638682, y=1.6108693392839208),\n", - " Point(x=0.968326330695687, y=1.3139550880088586),\n", - " Point(x=1.3508070075242857, y=0.22290610532132638)}" + "{Point(x=0.019776103178765214, y=0.05751328325941196),\n", + " Point(x=0.08201516948907406, y=0.831040189361657),\n", + " Point(x=0.10325343098110484, y=0.36755973349968385)}" ] }, "execution_count": 3, @@ -159,11 +152,10 @@ "# Visualizing Points and Line Segments\n", "\n", "\n", - "Now let's see how to visualize points; I'll define a function `plot_points`. We will want to be able to see:\n", + "To visualize points, I'll define a function `plot_points`. We will want to be able to see:\n", "- The **points** themselves. \n", - "- Optionally, **line segments** between points. An optional `style` parameter allows you to specify whether you want lines or not, and what color they should be. This parameter uses the standard [style format](http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.plot) defined by matplotlib; for example, `'r.'` means red colored dots with no lines, `'bs-'` means blue colored squares with lines between them, and `'go:'` means green colored circles with dotted lines between them. The lines go from point to point in order; if you want the lines to close\n", - "back from the last point to the first (to form a complete polygon), specify `closed=True`. (For that to work,\n", - "the collection of points must be a list; with `closed=False` the collection can be any collection.)\n", + "- Optionally, **line segments** between points. An optional `style` parameter allows you to specify whether you want lines or not, and what color they should be. The lines go from point to point in order; if you want the lines to close\n", + "back from the last point to the first (to form a complete polygon), specify `closed=True`. \n", "- Optionally, **labels** on the points that let us distinguish one from another. You get\n", "labels (integers from 0 to *n*) if you specify `labels=True`." ] @@ -175,6 +167,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -182,60 +177,18 @@ }, "outputs": [], "source": [ - "def plot_points(points, style='r.', labels=False, closed=False): \n", + "def plot_points(points, style='r.', labels=False, closed=False) -> None: \n", " \"\"\"Plot a collection of points. Optionally change the line style, label points with numbers, \n", " and/or form a closed polygon by closing the line from the last point to the first.\"\"\"\n", - " if labels:\n", - " for (i, (x, y)) in enumerate(points):\n", - " plt.text(x, y, ' '+str(i))\n", " if closed:\n", " points = points + [points[0]]\n", - " plt.plot([p.x for p in points], [p.y for p in points], style, linewidth=2.5)\n", + " plt.plot([p.x for p in points], [p.y for p in points], style)\n", + " if labels:\n", + " for (i, (x, y)) in enumerate(points):\n", + " plt.text(x, y, f' {i}')\n", " plt.axis('scaled'); plt.axis('off')" ] }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Here's an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_points(Points(200))" - ] - }, { "cell_type": "markdown", "metadata": { @@ -250,16 +203,19 @@ "# Convexity\n", "\n", "\n", - "We want to make a *convex* hull, so we better have some way of determining whether a polygon is *convex*. Let's examine one that is:" + "We want to make a *convex* hull, so we need to understand what makes a polygon *convex*. or concave. Here's a convex polygon:" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -268,9 +224,9 @@ "outputs": [ { "data": { - "image/png": "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\niAWdyUSNAAAAAElFTkSuQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -296,16 +252,19 @@ "source": [ "If you start at point 0 at the left and proceed in order counterclockwise around the octagon, following edges from point to point, you can see that at every vertex you are making a **left** turn.\n", "\n", - "Now let's consider a non-convex polygon:" + "Now let's consider a concave (non-convex) polygon:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -314,9 +273,9 @@ "outputs": [ { "data": { - "image/png": "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\nJwAAAABJRU5ErkJggg==\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -325,7 +284,7 @@ ], "source": [ "pacman = octagon[:4] + [Point(0, 0)] + octagon[5:]\n", - "plot_points(pacman, 'ys-', labels=True, closed=True)" + "plot_points(pacman, 'yo-', labels=True, closed=True)" ] }, { @@ -339,7 +298,7 @@ } }, "source": [ - "The `pacman` polygon is non-convex; you can see that a line from point 3 to point 5 passes *outside* the polygon. You can also see that as you move counterclockwise from 3 to 4 to 5 you turn **right** at 4. That leads to the idea: **a polygon is convex if there are no right turns** as we go around the polygon counterclockwise. " + "As you move counterclockwise around the pacman, you turn **right** at 4. That's the point where the polygon is concave; you can draw a line from 3 to 5 that is poutside the polydgon. That leads to the idea: **a polygon is convex if there are no right turns** as we go around the polygon counterclockwise. " ] }, { @@ -375,11 +334,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -387,12 +349,10 @@ }, "outputs": [], "source": [ - "def turn(A, B, C):\n", - " \"Is the turn from A->B->C a 'right', 'left', or 'straight' turn?\"\n", - " diff = (B.x - A.x) * (C.y - B.y) - (B.y - A.y) * (C.x - B.x) \n", - " return ('right' if diff < 0 else\n", - " 'left' if diff > 0 else\n", - " 'straight')" + "def is_left_turn(A: Point, B: Point, C: Point) -> bool:\n", + " \"\"\"Is the turn from A->B->C a left turn?\"\"\"\n", + " delta = (B.x - A.x) * (C.y - B.y) - (B.y - A.y) * (C.x - B.x)\n", + " return delta > 0" ] }, { @@ -411,18 +371,21 @@ "\n", "Now we have the first part of a strategy to find the convex hull:\n", "\n", - "> *Travel a path along the points in some order. (It is not yet clear exactly what order.) Any point along the way that does not mark a left-hand turn is not part of the hull.*\n", + "***Travel a path along the points in some order. (It is not yet clear exactly what order.) Any point along the way that does not mark a left-hand turn is not part of the hull.***\n", "\n", - "What's a good order? Let's see what happens if we start at the leftmost point and work our way to the rightmost. We can achieve that ordering by calling the built-in function `sorted` on the points (since points are tuples, `sorted` sorts them lexicographically: first by their first component, `x`, and if there are ties, next by their `y` component). We start with 11 random points, and I will define a function to help plot the partial hull as we go:" + "What's a good order? Let's see what happens if we start at the leftmost point and work our way to the rightmost. We can achieve that ordering by calling the built-in function `sorted` on the points (since points are tuples, `sorted` sorts them lexicographically: first by their first component, `x`, and if there are ties, next by their `y` component). I will define a function to plot the partial hull as we go:" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -430,8 +393,8 @@ }, "outputs": [], "source": [ - "def plot_partial_hull(points, hull_indexes=()):\n", - " \"Plot the points, labeled, with a blue line for the points named by indexes.\"\n", + "def plot_partial_hull(points, hull_indexes=()) -> None:\n", + " \"\"\"Plot all the points as labeled red dots, with a blue line for the points named by `hull_indexes`.\"\"\"\n", " plot_points(points, labels=True)\n", " plot_points([points[i] for i in hull_indexes], 'bs-')" ] @@ -442,7 +405,56 @@ "run_control": {} }, "source": [ - "Here are the points without any hull:" + "Given a sorted list of 11 points, let's start at the leftmost point and keep going until we make a right turn:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "button": false, + "collapsed": false, + "deletable": true, + "jupyter": { + "outputs_hidden": false + }, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "xys = [(40, 190), (138, 55), (143, 173), (182, 79), (182, 179), (206, 58), \n", + " (235, 80), (236, 111), (258, 160), (259, 19), (269, 150)]\n", + "pts = sorted(Point(x, y) for (x, y) in xys)\n", + "\n", + "plot_partial_hull(pts, [0, 1, 2, 3])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "button": false, + "deletable": true, + "new_sheet": false, + "run_control": { + "read_only": false + } + }, + "source": [ + "There is a right turn at 2, so remove it from the hull and continue on to points 4 and 5:" ] }, { @@ -452,6 +464,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -460,9 +475,9 @@ "outputs": [ { "data": { - "image/png": "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\nZuQlqbH/AxfLr4h5SHPkAAAAAElFTkSuQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -470,7 +485,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)))" + "plot_partial_hull(pts, [0, 1, 3, 4, 5])" ] }, { @@ -484,7 +499,7 @@ } }, "source": [ - "Now I will start building up the hull by following the points in order from point 0 to 1 to 2 to 3:" + "That's a right turn at 4, so remove it:" ] }, { @@ -494,6 +509,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -502,9 +520,9 @@ "outputs": [ { "data": { - "image/png": "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\nuo+17wAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgYAAAGFCAYAAACG8ztLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKZRJREFUeJzt3Q2czXX6//H3aIy7MW5HWKHWXSkWZbGVmxCKik1SRBLdKSpbth7V+rVlU9rahNyEKDspi1VK7nKTRIRKKFkb2f5SIjfh/7jOZ+frZg0znHO+33O+r+fj4XG+zoyZz35PO+ea63Nd1yfl0KFDhwQAACApH3cBAABkIzAAAAAeAgMAAOAhMAAAAB4CAwAA4CEwAAAAHgIDAADgITAAAAAeAgMAAOAhMAAAAB4CAwAA4CEwAAAAHgIDAADgITAAAAAeAgMAAOAhMAAAAIkXGOzZs0d33HGHSpUqpfT0dHXo0EHffvut38sCACCpJExg0LdvX02bNk1ZWVmaN2+evvnmG7Vv397vZQEAkFRSDh06dEgB98MPPygzM1MTJ07U73//+8hzn3/+uc4991wtXrxYDRo08HuJAAAkhYTIGCxbtkz79+9X8+bNvedq1KihihUrRgIDAAAQHamKs02bpO++y/njpUtLFSse/dzWrVuVlpam4sWLH/X8mWeeGfkYAABIwMDAgoLq1a2QMOfPKVhQWrv2f4MDAACQZFsJlik4UVBg7OPHZhTKli2rffv2aceOHUc9b10J9jEAABCiGoN69eopf/78eu+997zn1q5dq02bNqlhw4a+rg0AgGQS9xqDU1GsWDH16NFD/fr1U8mSJZWRkaG77rorEhTQkQAAQMgCAzNkyBDly5cvMtho7969uvzyyzV06FC/lwUAQFKJ6xyD5cttW+Dkn7dsmVS3bjxWBAAAEq7GAAAAxAeBAQAA8CcwsOFFNqfgRFJSTv45AAAgSc5KyGny4Y8/Sp062WwCqUsXady4eK4KAAAE7hClBQukxo2lgwel8eOlG2/0e0UAAIRLoGoMLr5YeuQRd33bbdKGDX6vCACAcAlUxsAcOCA1aybNny9ddJHLIqSl+b0qAADCIVAZA3PGGdIrr0glSkhLl0oPP+z3igAACI/AZQyyvfmm1L69u545U2rZ0u8VAQCQ/AKXMch2zTVS797uumtXads2v1cEAEDyC2xgYJ55RqpZ07UwduvmuhUAIFYsgdq6dWulpKRoypQp3GiEUqADg0KFpNdecwOP3npLeu45v1cEIJk9++yzkaAACLNABwbm/PNd5sD07+8OYgKAaFuxYoWefvppjR49mpuLUAt8YGCs1uDqq6X9+6Xrr5d++snvFQFIJrt371bnzp31wgsvqGzZsn4vB/BVQgQGltkbNUqqUEH64gupTx+/VwQgmfTt21eNGjXSVVdd5fdSAN8lRGBgSpZ08w0sSBgzRnr1Vb9XBCAZTJ06VbNnz47UFwBIoMDA2DkKDz10eHvhq6/8XhGARGdBwYYNG1S8eHGlpqZG/pgOHTqoSZMmfi8PiLvADjjKyS+/uABh0SKpQQM3Ojl/fr9XBSBwNm+W1q2TqlZ1+5A52Lp1q7475sjXCy64QH/961/Vtm1bnX322XFYLBAcCRcYmK+/lmrXln74QRowQHr8cb9XBCBQrCjp1lvd8JN8+aQRI6QePXL9z61l8c0339TVVvUMhExCbSVkq1RJeukld/3EE5YK9HtFAAKVKcgOCow99urlngeQnIGBufZaqWdPm1Qm3XijdEwmEEBY2fbBsWNS7djW9etz/SUskUq2AGGVsIGBGTJEqlFD2rJF6t7dBQkAQs5qCmz74NhjW6tU8WtFQEJJ6MCgSBE3MjktTZo+Xfrb3/xeEeCv7du366677lL16tVVqFAhVaxYUX369NEPVpATFlZoaDUFFgwYexw+/IQFiAASvPjwWM8/74YeFSggLVniChOBMFq9erUeeeQRdevWTeedd56+/vpr9e7dW7Vq1dLrr7+uULGaAts+sEwBQQEQrsDA/he0a+eyBra18NFHLpsAQMrKytKNN96oXbt2eT36AJCUWwnZsqchlisnff65jTf1e0VAcNg2QkZGBkEBgPAEBqZ06cMjk62VMSvL7xUB/rPBPQMHDtSt1r4HAGHZSjiSDTyy2QbFikkrV7qZB0AY/fjjj2rRooVKliwZOQ8gPyNCAYQxMLCjmS+5xBUhNmokzZsnsa2KsNm5c6cuv/xyFS5cWNOnT1fBggX9XhKABJE0WwnZ7JciO3kxI8OdpzBwoN8rAqJUYT9nTq6m91mmoGXLlkpLS4tkCggKAIQ6Y5DNgoPOnd2cExuZbAcvAck+9z87KNi9e3dk1n+RI9pzMjMzdUZ2bz8AhC0wMDff7LoVrIV5xQqpVCm/VwTkkWUIrFDmyBG/9ua+ceNxe/Pnzp2rpk2bHvdLffXVV6pcuTIvAYBwbSUc6bnnpGrV3M/WW25hZDKSf+5/kyZNInP+j/eHoACAwh4YpKe7LQWrO5gyRRo2zO8VAXnE3H8AcZbUgYGpW1caNMhd9+tnI2P9XhGQB8z9BxBnSV1jkM0ysVdeKb31llSzprR0qVSokN+rAvKAuf8A4iQUgYHZtk2qVUv69lvpttukoUP9XhEAAMGT9FsJ2cqUkcaPd9cvvii9+abfKwIAIHhCExiYFi2k/v3dtbWB/+tffq8IAIBgCc1WQrZ9+6Tf/c4dzWyjk22YHDNfAAAIYcbApKW5FkZrZXz/fenxx/1eEQAAwRG6jEE2O6K5Sxc3YXb+fJdFAAAg7EIbGJiuXV1BYsWKbmRyiRJ+rwgAAH+FOjDYudMNQLLpsh06SFlZUkqK36sCAMA/oasxOFLRoq7eIDVVmjxZGjnS7xUBAOCvUAcG5sILpT//2V3ffbf06ad+rwgAAP+EeivhyJHJrVpJ774rXXCB9OGHUsGCfq8KAID4C33GIHIT8knjxkmZmdKqVYeHIAEAEDYEBv9Vtqw0dqy7fv55ado0H18VAEBC27p1q7p06aKyZcuqSJEiqlu3riZbMVsCIDA4QuvW7mhm07279O9/+/SqAAASWteuXbV27VpNnTpVq1atUvv27dWxY0d9/PHHCjpqDI6xd6/UqJG0fLnUtKmrO2BkMgAgL9LT0/Xiiy9GsgbZSpUqpUGDBumWW25RkJExOEaBAq6FsUgRd47CoEH+vDAAgMTVqFEjTZo0Sdu3b9fBgwf12muvac+ePWrSpImCjoxBDl5+2W0nWLbAzlRo2DC+LwwAIHHt2LFD1113nd555x2lpqaqcOHCysrKUsuWLRV0ZAxycNNN0vXXSwcOSJ07Sz/8EN8XBgCQuB5++OFIcDBr1ix99NFH6tevX6TGwOoNgo6MwQlYMFCnjvTVV9J117ktBkYmA0BIbd4srVsnVa0qVaiQ46dt2LBBVapU0erVq1WzZk3v+ebNm0eeHzZsmIKMjMEJFCt2eGTypEluewEAEEKjRkmVKknNmrlH+3sOdu/eHXnMZ0NyjnDGGWdE6g2CjoxBLjz5pPTgg1Lhwq5boXr12L8wAIAAZQoqVXJjcrNZAdrGjcfNHOzfv1/nnXeeypUrp8GDB0e6EaZMmaL7779f06dPV5s2bRRkZAxywSYhWpBoQWCnTq6lEQAQEuvWHR0UGCtAs6N5jyN//vyaMWOGMjMz1bZtW9WqVUvjxo3T2LFjAx8UGDIGufTNN1KtWtL/+3/SPfdIQ4bE9oUBACRmxiDRkTHIpfLlD9cYPPusNGNGDF8VAEBwVKggjRhxeNqdPQ4fnpRBgSFjkEd2NPNzz7kDl1aulMqVi80LAwAIYOZg/XqpSpWkDQoMgUEe7dkjNWjggoLmzaWZM93pjAAAJAPe0vKoYEHptddch8KsWdLgwbF5YQAA8AMZg1M0cqTUs6ebcbBwoVS/fnRfGAAA/EBgcIoOHXLTELOypHPOkewkzYyM6L44AADEG1sJp8hGI1uRqnWwfPmldPvt0X1hAADwA4HBaSheXJo40XWuTJggjR8fvRcGAAA/EBicpkaNpEcfddeWNbABWQAARNuIESPUpEkTZWRkKCUlJXJ647G2b9+uG264IfI5xYsXV48ePfTTTz/l6fsQGESBnaPQuLFk996Oat63LxpfFQCAow9natWqlQYMGKCcWFCwZs0avfvuu5FzGebPn69bb71VeUHxYRTnXtSubdGadN990lNPResrAwBw2Ny5c9W0aVN9//33kaxAts8++yxyeNPSpUt14YUXRp57++23I+czbN68WeVthG8ukDGIEhuCNXq0u7bZBjb4CACAeFm8eHEkUMgOCkzz5s0jxz8vWbIk11+HwCCKrrrqcHdC167St99G86sDAJCzrVu3qkyZMkc9l5qaqpIlS0Y+llsEBlFm2YLzz5e2bZO6dfvfkzoBAAgyAoMoK1TIjUy20clvv+1OYgQAINbKli2rbfZb6RF++eWXSKeCfSy3CAxioGbNwwHBAw9Iy5bF4rsAAJKicn3OHPd4mho2bBhpYVx2xJvO7NmzdfDgQf32t7/N9dchMIgR6w5p317av1/q1EnauTNW3wkAkJBGjXLjc5s1c4/29xOwOoEVK1ZovR39LGnVqlWRv1tGwJx77rmRdsaePXvqww8/1MKFC3XnnXeqU6dOue5IMLQrxpC9VtbCaIHgTTdJL78cy+8GAEgYmze7YODIQjQbo7txo2tzO45HH31Ujz322P88P2bMGHWzorb/DjiyYGDatGmRboQOHTroueeeU3p6eq6XRmAQY/PnS02butfexiZ37hzr7wgACLw5c1ym4HjPN2kiP7GVEGOXXio9/LC77t3bHbgEAAi5qlWlfMe8BVvGoEoV+Y3AIA4eeki6+GJXZ2Ajk63uAAAQYhUquCN6LRgw9jh8eI7bCPHEVkKcbNrk6g3szAvrVHjiiXh9ZwBAoGsN1q93mYIABAWGwCCOJk+Wfv97KSVFeucdG1UZz+8OAMDJERjEWa9eLntksyY++UTKzIz3CgAAyBmBQZzt3i3Z+RaffSZdcYU0bZrLIAAAEAQUH8ZZ4cJuZHKBAtI//yk9/3y8VwAAQM4IDHxQq5b09NPu+v77pRUr/FgFAAD/i60Enxw6JF19tTR1qlS9ujtPoUgRv1YDAIBDxsAnVlcwerT0q19Ja9dKd9/t10oAADiMwMBHpUpJ48e7IMHOzpg0yc/VAABAYOA7O0dhwIDDJzLa+RkAAPiFGoMAsBHJjRtLixfbedru4KXUVL9XBQAII7YSAiB/fmniRCkjwwUHxzlVEwCAuCBjECBWY9Cpk6s5mD3b95M3AQAhRGAQMLfc4goRy5eXVq6USpf2e0UAgDAhMAiYXbukevVcC2O7dtKUKYxMBgDEDzUGAWNDjl59VUpLc8OPhg71e0UAgDAhMAigOnWkv/zFXd97r7Rqld8rAgCEBVsJAR6Z3LatO2jpvPOkpUvdAUwAAMQSGYOAss6EMWOksmWlTz+V+vXze0UAgDAgMAiwzEzplVdckDB8uDR5st8rAgAkOwKDgLvsMql//8OtjJs2+b0iAEAyo8YgQUYmX3yx9OGH7nHOHEYmAwBig4xBAo1MLlpUWrBAevxxv1cEAEhWZAwSiAUHN9wg5csnzZ0rXXKJ3ysCACQbAoME062bNHasdNZZ0ooVUsmSfq8IAJBMCAwSzM6dbmTyunVS+/bS668zMhkAED3UGCQYqzOwkclWd/DGG9KIEX6vCACQTAgMEpBlDJ54wl3fc4+0Zo3fKwIAJAu2EhLUwYNSmzbSzJnSBRdIS5ZIhQr5vSoAQKIjY5CgrDPBihDLlHGHLN1/v98rAgAkAwKDBHbmmdK4ce76hRekf/zD7xUBABIdgUGCu/xy6b773PXNN0ubN/u9IgBAIqPGIAns2yc1aiQtWyY1biy99550xhl+rwoAkIjIGCSBtDTXwlikiDRv3uGOBQAA8oqMQRKxeoObbnLZgvnzXRYBAIC8IDBIIocOSV26SBMmSJUquZHJxYv7vSoAQCIhMEgyP/4o1akjffmldO210qRJjEwGAOQeNQZJJiPD1RukpkpZWdLo0X6vCACQSAgMklD9+tL//Z+77tNH+uwzv1cEAEgUbCUk8chkm3Ewa5ZUu7b0wQdSwYJ+rwoAEHRkDJJ4ZLJ1KZQuLa1cKT3wgN8rAgAkAjIGSW7GDOmKK9z1tGnSlVf6vSIAQJCRMUhydgKjHc1suneXvvnG7xUBAIKMjEEI7N0rNWjg5ho0aya98w4jkwEAx0fGIAQKFJBee00qXFiaPVt66im/VwQACCoyBiFiMw169HDZggULXBYBAIAjERiEbGTy9de7aYhnny19/LFUrJjfqwIABAlbCSGSkiINGyZVrix99ZV0220uWAAAIBuBQcjYoUoTJ7rtBBudbLMOAADIRmAQQg0bSn/6k7u+4w7piy/8XhEAICioMQipAwekFi2kOXPcaYyLF7vuBQBAuJExCCnbShg/XipVyhUhDhjg94oAAEFAxiDkpk6VrrrKXb/1ltSqld8rAgD4iYxByLVrJ915p7u+6SZp61a/VwQA8BMZA2jPHql+fWnVKqllS5c5sNMZAQDhw49/qGBBNzK5UCF3jsIzz3BTACCsyBjA89JL0q23Sqmp0qJF0kUXcXMAIGwIDOCxKYjXXitNniz9+teuW6FoUW4QAIQJWwk4amSyZQ3OOkvasMENPwIAhAuBAY5SooQbmWzFhzbn4JVXuEEAECYEBvgfF18sPfKIu7aDlix7AAAIB2oMkOPI5GbNpPnzXRHiggVSWho3CwCSHRkD5Dgy2bYRbGth6VLp4Ye5UQAQBmQMcEJvvim1b++uZ850A5AAAMmLjAFO6JprpN693XXXrtK2bdwwAPG3ceNGpaSkHPdPVlYWL0kUkTHASf38s6szWLNGat1amj6dkckA4uvAgQP6z3/+c9RzI0aM0FNPPaUtW7YoPT2dlyRKCAyQK6tXu+DAzlUYMkS65x5uHAB/1alTR3Xr1tWoUaN4KaKIrQTkyvnnHz5DoX9/aflybhwA/yxbtkwrVqxQjx49eBmijIwB8jQy2QoRp0yRqlWz/2NKZO8A+OH222/X3Llz9emnn/ICRBkZA+RpZPLIkdKvfiV98YXUpw83D0D8/fzzz5o4cSLZghghMECelColTZjggoQxY9xxzQBwyjZvlubMcY+59Prrr2v37t3qaq1SiDoCA+RZ48bSQw+56169pK++4iYCOAVWNFipkhuzao+5LCK0YsN27dopMzOT2x4D1BjglPzyiwsQFi2SGjRwo5Pz5+dmAsglyxBYMHDw4NEjVzdulCpUyPGfrV+/XtWqVdOMGTPUqlUrbncMkDHAKUlNdacwFismffCB9Oij3EgAebBu3dFBQfYhLevXn/CfjR49WhUqVFBLxrDGDBkDnBYbONaxo6s5mDXLZQQBIFYZA8QeGQOclmuvlW65xbUy3nij9N133FAAuWBv/iNGuGDA2OPw4QQFAUDGAKdt1y7pwgulzz+X2raV/vEPl0EAgFxlDmz7oEoVgoKAIDBAVKxcKdWvL+3bJz3/vHTnndxYAEhEbCUgKmrXlgYPdtf33ecCBQBA4iFjgKixOoN27dzpizVqSB99JBUpwg0GgERCxgBRkz0NsVw5V2/Qty83FwASDYEBoqp0aemVV1yQ8NJLrp0RAJA4CAwQdTbL4IEH3HXPntLXX3OTASBRUGOAmNi/X7rkEmnJEul3v5PmznXTEgEAwUbGADFh5ya8+qqUkSEtXCgNHMiNBoBEQMYAMWXBQefOUr580uzZ7uAlAEBwERgg5m6+2XUr2ATUFSukUqW46QAQVAQGiLmffpLq1ZO++EK6+mrpjTcYmQwAQUWNAWIuPd1tKVjdwZQp0rBh3HQACCoCA8RF3brSoEHuul8/afVqbjwABBFbCYgbO3b9yiult96SataUli6VChXiBQCAICFjgPj9x5ZPevll6cwzpTVrpHvv5eYDQNAQGCCuypSRxo931y++KL35Ji8AAAQJgQHirkUL6f773XWPHtK//sWLAABBQY0BfLFvnxuVbEczX3qpG350xhm8GADgNzIG8EVammthtFbG+fOlP/+ZFwIAgoCMAXxlRzR36eIKEy1AsCwCAMA/BAbwXdeuriCxYkU3MrlECb9XBADhRWAA3+3c6QYgrV8vdeggZWUxMhkA/EKNAXxXtKg0caKUmipNniyNHOn3igAgvAgMEAgXXXS4APHuu6VPP/V7RQAQTmwlIFAjk1u1kt59V6pVS1qyRCpY0O9VAUC4kDFAYFhnwrhxUmam9MknUv/+fq8IAMKHjAECxw5ZatPGXU+dKrVt6/eKACA8yBggcFq3dkczm+7dpX//2+8VAUB4kDFAIO3dKzVsKH38sdS0qas7YGQyAMQeGQMEUoEC0muvSUWKSHPmSIMG+b0iAAgHMgYItJdfdtsJli1YsEBq0MDvFQFAciMwQKAdOiTdcIM7cKlyZTcyuVgxv1cFAMmLrQQEWkqK9OKL0tlnSxs3Sr16uWABABAbBAYIPMsQWMbARiZPmuS2FwAAsUFggITw299KAwe66zvvlNau9XtFAJCcqDFAQo1MbtFCmj1b+s1vpA8+cN0LAIDoIWOAhBqZPH68VKqUK0J84AG/VwQAyYeMARLO9OmHxyT/85+HxycDAE4fGQMknCuvlPr0cdfduklbtvi9IgBIHmQMkJD27HHDjlaulJo3l2bOdFsNAIDTw49SJKSCBd3I5MKFpVmzpMGD/V4RACQHMgZIaCNHSj17uhkHCxdK9ev7vSIASGwEBkhoNgXxuuukrCzpnHPcaYwZGX6vCgASF1sJSPiRySNGSJUqSV9+Kd1xh98rAoDERmCAhFe8uDRxojuB8ZVX3KwDAMCpITBAUmjUSHr0UXd9++3SunV+rwgAEhM1BkgaBw5Il10mzZsn1asnLVokpaX5vSoASCxkDJA0srcSSpaUli2T/vhHv1cEAImHwABJpUIFadQod22zDWzwEYDEt3jxYjVr1kxFihRRRkaGLr30Uv38889+LyspERgg6Vx9taszMDfdJH37rd8rAnC6QUGrVq3UsmVLffjhh1q6dKnuvPNO5WPcaUxQY4CkZL9I2LCj1aulVq3cYUv8DEFOevXqpVmzZumbb75Renq6GjVqpEGDBqlGjRrctABo0KCBWrRooYEDB/q9lFAgY4CkVKiQG5lso5Pfflt69lm/V4Qgq1evnsaMGaPPPvtMM2fO1KFDhyK/nR6wilb4atu2bVqyZInKlCkTCdjOPPNMNW7cWAsWLOCViREyBkhqw4dLvXtL+fNbOtJ1KwAn88knn6h27dpav369fv3rX3PDfPTBBx+oYcOGKlmypAYPHqzf/OY3GjdunIYOHarVq1eratWqvD5RRsYASe3WW6X27aX9+6VOnaSdO/1eEYJu165dkezB2WefrbPOOsvv5YTewYMHve2e7t27q06dOhoyZIiqV6+u0aNHh/7+xEJqTL4qEKCRyS+9JH34obR+vXTXXdLLL/u9KsTKpk3Sd9/l/PHSpaWKFY//MfsNtH///pHAwN503n33XaUxCCN2Nm92k8jsN35rJ8pBuXLlIo/nnXfeUc+fe+652mQvOKKOjAGSns01mDDBFR+OHevGJyP52HtE9epuuyinP/bxnN5LbrjhBn388ceaN2+eqlWrpo4dO2rPnj3x/p8RDtZTbAecNGvmHrN7jI+jcuXKKl++vNauXXvU81988YUq2b9F1FFjgNCwkcmPPSYVLSqtWOFOY0TyWL48dzUkNvyqbt0Tf86+fftUokQJjRw5Utdff33U1oj/ZgrsDf2/WwTedLKNG3PMHDz77LN65JFHNGrUqEiNwdixYyP1BlZjQA1I9LGVgNB46CHpvfckK2a2n/X2aEWJwLGsK8H+7N27l5sTbbZ9cGRQYKz7w/b6cggM7rnnnkj2pm/fvtq+fXukMNS2eggKYoOMAULF0si1a0s7dkgPPCA98YTfK4LfGYMvv/xSkyZNirQnZmZmavPmzXryySe1cOHCSPuitcnB34wB4osaA4SKFZ6NHOmuBw2SZs3ye0XwW8GCBfX++++rTZs2qlKliq677joVLVpUixYtIiiIBXvzHzHCBQPGHq2vmKAgMMgYIJR69XI/m8qWtZ51KTPT7xXhdHz6qZtX8f770akxQJwyB7Z9UKUKQUHAEBgglHbvli68UPrsM+mKK6Rp01xrIxLLN99IjzwiWTv7sdvWOSEwAE6MrQSEUuHCbmRygQLuHIXnn/d7RciLH390xaT2y6ZtDVlQ0LRp7oNCADkjMEBo1aolPf20u77/ftfCiGDbt0/6298km1L8+OPusKxGjaSFC93gKjsb42Ruu03asiUeqwUSE1sJCLVDh9wxzVOnuuE3lmYuUsTvVeF4r9Prr0sPPiht2OCeq1bNFZBeddXhbaATTT5ctUrq21f6/ntXFD9jhk3T414DxyIwQOjZG4m1MNp+dY8eh7sWEAzz57uMjo21Nmee6YZV2WuV1zkUFlS0bu1a6YsXl6ZMkRo3jsmygYTFVgJCz+bnv/KK+63TJrP+/e+hvyWB6TRo1869cVtQYJkcCwiskD37xMy8si2IRYvc9oPNsmjRghHZwLEIDAC5wrUBAw6fyGizVuAPy9z07CldcIHrFrE2d6sLsIDAOhDS008/ELT5FR06uFM3b7jBDbqy7QoAbCUAHnuTsN9OFy+WGjZ0KexUhobHtdPgL3+RnnnGFRWaa65xb9pW/xFt1slgWxT2/bIDwhde4DUHqDEAjmCZAqs3yG6HGziQ2xOPTgMbNmUHXGUXDlqq34KE3/0u9vf/uedsFr/LGLRpI02adPpZCSCRERgAx7A3hk6dXM3B7NlSkybcIj87DeLBihDtYC07ZdmmIk6fLpUrF7/vDwQJgQFwHFbxbtP0ypeXVq50+9IIZqdBtHzwgdS2rcta0M6IMCMwAI5j1y53Ut/ata4y3n6jZGRydDoN7FRLKyo01mlgAcK99wYjfU87I0BXAnBc9ob16qtSWpobfvTii9yoIHcaRAvtjACBAZCjOnVcAZzp189NzsPpn2lgnQZr1khDh7rTLYOGdkaEHVsJwEkK5Gzf2Q5asvG5S5e6A5gQ7E6DaKCdEWFFYACcxH/+4w5c2rpV6tVLGjaMW5bXToMnn3RnUiRinQbtjAgbAgMgF2xSXsuWh9/4bGoegt9pEC20MyJMCAyAXLJqeuuxt8N3rIWxYkVuXSJ0GkQL7YwICwIDIA8jky++2P1GfMklbvhRmEcmW6eBdRTYvAfbj7dOA+s8sOeCWFQYDbQzIgw4RAnIJUuHT5woFS0qvf++9Pjj4bx1J+o0sLbOZA0KDO2MCAMyBkAeWXBgJ/LlyyfNneuyB2GQDJ0G0WKHPHXpIk2e7P7+5z+77ZRELK4EjkVgAJyCbt2ksWOls86SVqyQSpZM3tuYjJ0G0UA7I5IVgQFwCnbudIft2OS+9u3dG2cyvkEmc6dBtNDOiGRDYACcomXLpIYNXVGizTawGQfJIiydBtFCOyOSCYEBcBqeflq67z6pYEHpo4+kmjUT+3aGsdMgWmhnRLIgMABOg715tmkjzZzpDghaskQqVCgxOw2siPCZZ1xhnbFOgyeekKpX93t1iYN2RiQD2hWB0/k/UD5XhFimjDtkydLtidZp8Le/uTY8a7+0oMA6DRYskN54g6Agr2hnRDIgMABOkxXkjRvnrl94QfrHPxKj0yAryx0Mddddrv3QOg0sGLCgIGzth9HE6YxIdAQGQBRcfrkrzDM33yxt3hzsToMGDaSOHV3q2wIbG0y0erXbPkjG7op4s+2kv//dHddtBgyQeveWfvnF75UBJ0eNARDFtLyl4a1boXFj6b33XPFeUNBp4A/aGZFoyBgAUZKWJr36qmvtmzfPDQAKSqeBdRZYcaS1H1qwYr+92gwG6zag/TC2+vRxWzTWuTJjhgsat2yJ3tdv0qSJUlJSjvrT215g4BSRMQCizOoNbrrJvQFb2t6yCH6g0yAc7YwWGFSrVk1/+tOfvOcKFy6sjIyM0//iCCUyBkCU2Qx9O0vhwAGpc2dpx4743mI6DYLJ6josOKhaVfr6a1fgaZmlaLBAoGzZst4fggKcDgIDIMqseG/oUOmcc9wbwK23ui6AWKPTILztjBMmTFDp0qV1/vnn68EHH9Tu3bujsVyEFFsJQIzY+QL2W6FVotvxxHa+QLzONLC5CnYKImcaJP/pjCNGjFClSpVUvnx5ffLJJ/rDH/6g+vXr6w0rbABOAYEBEEODBrkf+IULu26FGjVi32lgI5qtdbJo0eh+L8T2dEbbdrr7bik1Nef5CBUrnvzrzp49W5dddpnWr1+vX1uKAsgjAgMgxj/8bcbBrFlS7dpuj9mq00+F/WY4ceJELV++XDt37lSXLt9rwoTinGmQBO2MFhCcjP13s3btyYODXbt2KT09XW+//bYut//4gDyixgCI8chk61Kw3/ZWrnS/3Z8q2zdu0qSVLrxwQOTv48e7wMOGEq1Z44YUcdBRYrYzDh588s/bs8d1NJzMihUrIo/lypWLwuoQRjkkrQBEi/18tvMUrrhC+utfpebNpSuvzHunQWrqPZGRy999Nzfy3EUXSUOGML44GTRtemr/bsOGDZEsUps2bVSqVKlIjUHfvn116aWXqlatWtFeJkKCjAEQB3YC4z33uOvu3d3QoVPtNKhQwX3MTnTkTINwS0tL06xZs9SyZUvVqFFD9957rzp06KBp2UUnwCkgYwDEiU1CnDvXUr3S1Ve7A5eONzI5u8gsp06DKlVcmxtnGuCss87SvGgNQwD+i8AAiJMCBVwFerNm0tKlUv36OY9WvuQSd9bC8ToNLLgAgFghMADiqFix3NUTZB/AZGcc2HkGFBUCiBcCAyCgxWjWZVC9ut8rARA2BAZAAFn72rFBwdatWyN/bHCNWbVqlYoWLaqKFSuqZMmS/iwUUWF1JTanwFoSc2Ift88DYo3AAEgQw4YN02NWffhf1pJmxowZo27duvm4MpwuKza14UUnmlOQ28mHwOli8iEQR8uXS/XqnfzzbHxy3brxWBEAHI05BgAAwENgAAAAPAQGgA9FZidCkRkAP1FjAMTZpk0UmQEILgIDAADgYSsBAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAICHwAAAAHgIDAAAgIfAAAAAeAgMAACAh8AAAAB4CAwAAIiRDRs26JprrlFmZqYyMjLUsWNHffvtt4G+3wQGAADEwK5du9SyZUulpKRo9uzZWrhwofbt26e2bdvq4MGDgb3nKYcOHTrk9yIAAEg277zzjlq3bq3vv/8+ki0wP/zwg0qUKBH5WPPmzRVEZAwAAIiBvXv3RrIFBQoU8J4rWLCg8uXLpwULFgT2nhMYAAAQAw0aNFCRIkX0hz/8Qbt3745sLdx33306cOCAtmzZEth7TmAAAEAMZGZmKisrS9OmTVN6erqKFSumHTt2qG7dupGsQVCl+r0AAAASyubN0rp1UtWqUoUKJ/xUKz60zoTvvvtOqampKl68uMqWLatzzjlHQRXckAUAgKAZNUqqVElq1sw92t9zoXTp0pGgwLoTtm3bpnbt2imo6EoAACC3mYJKlaQjWw3POEPauDHHzMGYMWN07rnnRrYVFi9erLvvvlvdunXT008/Hdh7zlYCAAC5sW7d0UGBOXBAWr8+x8Bg7dq1evDBB7V9+3ZVrlxZf/zjH9W3b99A328yBgAAxChjkIioMQAAIDcqVJBGjHDBgLHH4cOTKigwZAwAAMhr5mD9eqlKlaQLCgyBAQAA8LCVAAAAPAQGAADAQ2AAAAA8BAYAAMBDYAAAADwEBgAAwENgAAAAPAQGAADAQ2AAAAA8BAYAAMBDYAAAADwEBgAAwENgAAAAPAQGAADAQ2AAAAA8BAYAAMBDYAAAADwEBgAAwENgAAAAPAQGAADAQ2AAAAA8BAYAAEDZ/j/uSXQS0+0I0AAAAABJRU5ErkJggg==", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -512,7 +530,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 2, 3])" + "plot_partial_hull(pts, [0, 1, 3, 5])" ] }, { @@ -526,7 +544,7 @@ } }, "source": [ - "We see that we made a valid left turn at point 1, but a right turn at 2. So we remove point 2 from the hull:" + "But now we see point 3 is also a right turn. The addition of one new point (5) can remove multiple points (4 and 3) from the hull. We remove 3 and move on to 6, 7, and 8:" ] }, { @@ -536,6 +554,9 @@ "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -544,9 +565,9 @@ "outputs": [ { "data": { - "image/png": "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\nXu3xhMF/x4mDviKbudc9Rxh5zZqCn0ezLeO1RMxdtegjYtPMvKv8kNkfuGZMM2hULHn1vEx+HcHh\nwNeBDYGzItgrkwfH8n3K5iXTGFpxb8zoP4y8B1gM3AVLZpbfs9N2oin4icAOwEyaH6iP9c2I2JDm\n/x6uAo7oaEINyJJXK2TyjQieBR89Ah54Jtx3a8QdN614xVo/oEzYf3IET2bg0l4+jTLau2z/DtwJ\n3DXI44+ZLF3+TRG/P586JX8NcC1NwV9Hc1nmSjLz+Z0OpaGz5NUmR8N9r4ETpgJPLI/iiE0jeB+r\nzXk/6Ulw8h2jfN+HefSMe7XHqseXZI7kBqVFN676IeuK4+Mo836aq3RmAgvXNCev7uYllGqViNde\nDKfPXv0rHyyP5b4AfJymgzemuXfopFW/6c8MfsZ9F3DPUC/dlDrNM3m1zINLB3nBEuAueHt5DDhd\n4rXe6nmWvPrELQuAfTJZUjuJ1Eneiqw+sfQBC179yDN5tUylDyilLuUHr5LUYk7XSFKLWfKS1GKW\nvCS1mCUvSS1myUtSi1nyktRilrwktZglL0ktZslLUotZ8pLUYpa8JLWYJS9JLWbJS1KLWfKS1GKW\nvCS1mCUvSS1myUtSi1nyktRilrwktZglL0ktZslLUotZ8pLUYpa8JLWYJS9JLWbJS1KLWfKS1GKW\nvCS1mCUvSWMgIp4XEZdHxK8j4pSI6Ip+7YoQktTLIiKAU4GDMnNn4HfAITUzLWfJS9LozQCWZuYt\nZfxz4BUV8zzKkpekUcrMPwETImJWOXQAsEXFSI+y5CVpbBwMfDYi5gN/BZZVzgPAhNoBJKkNMnMB\nsBdAROwLbFs3UcMzeUkaioipRMwhYuqavxwblV8nAe8FTuxkvLWx5CVpME2xzwMuAOatpeiPjYhr\ngauA72fm+R1MuFaRmbUzSFJ3i5hDU/ATgQeBvcmcXzfU0HgmL0mDuwa4lqbgrwMW1o0zdJ7JS9JQ\nNFM0M4GFZN5fO85QWfKS1GJO10hSi1nyktRilrwktZglL0ktZslLUotZ8pLUYpa8JLWYJS9JLWbJ\nS1KLWfKS1GKWvCS1mCUvSS1myUtSi1nyktRilrwktZglL0ktZslLUotZ8pLUYpa8JLWYJS9JLWbJ\nS1KLWfKS1GKWvCS12P8DNZrqgpzBy5EAAAAASUVORK5CYII=\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -554,133 +575,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 3])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "We move on to points 4 and 5:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\nrkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 3, 4, 5])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Point 4 is a right turn, so we remove it:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 3, 5])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "But now we see point 3 is also a right turn. The addition of one new point (5) can remove multiple points (4 and 3) from the hull. We remove 3 and move on to 6, 7, and 8:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\nOeTNzCrs/wEQ9RRP5yV8CAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 5, 6, 7, 8])" + "plot_partial_hull(pts, [0, 1, 5, 6, 7, 8])" ] }, { @@ -699,11 +594,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -712,9 +610,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgYAAAGFCAYAAACG8ztLAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMBRJREFUeJzt3Quc1PP+x/H3TvfattTGChWndCNd3ArddNMhFLpQpBLnJEK5HLmchByO5JZQugj/kINDKimpJCWESokVXU6iq0qX/+Mz32Z2W7W3Zub3m5nX8/FY89vdafv6Tjvzme/38/l8U/bt27dPAAAAkgLMAgAACCEwAAAAYQQGAAAgjMAAAACEERgAAIAwAgMAABBGYAAAAMIIDAAAQBiBAQAACCMwAAAAYQQGAAAgjMAAAACEERgAAIAwAgMAABBGYAAAAMIIDAAAQPwFBjt27NDf//53VaxYUampqerUqZPWrVvn9bAAAEgocRMYDBgwQG+99ZYmTZqkWbNm6eeff1bHjh29HhYAAAklZd++ffvkc5s2bVKlSpU0ceJEXXLJJcGvLV26VLVr19a8efN05plnej1EAAASQlysGCxcuFB//PGHWrVqFf5arVq1VKVKlWBgAAAAIqOoYiwzU9qw4dDfT0+XqlQ58Gtr165V8eLFVb58+QO+ftRRRwW/BwAA4jAwsKCgZk1LJDz0fUqWlJYt+3NwAAAAEmwrwVYKcgsKjH0/54pCRkaGdu3apd9+++2Ar1tVgn0PAAAkUY5Bo0aNVKxYMb3//vvhry1btkyZmZlq3Lixp2MDACCRxDzHoDDKlSunXr166aabblKFChWUlpam66+/PhgUUJEAAECSBQbm0UcfVSAQCDY22rlzp9q2baunnnrK62EBAJBQYtrHYNEi2xbI+34LF0oNG8ZiRAAAIO5yDAAAQGwQGAAAAG8CA2teZH0KcpOSkvd9AABAgpyVcKjOh5s3S126WG8CqXt3ady4WI4KAAD47hCljz6SmjWT9u6Vxo+XrrjC6xEBAJBcfJVjcPbZ0t13u+vrrpNWrvR6RAAAJBdfrRiYPXukli2lDz+UTjvNrSIUL+71qAAASA6+WjEwRYpIEyZIRxwhLVggDR7s9YgAAEgevlsxCJk8WerY0V2/957Upo3XIwIAIPH5bsUg5OKLpWuvddc9ekjr13s9IgAAEp9vAwPz739Ldeu6EsarrnLVCgAQLbaAet555yklJUVvvPEGE42k5OvAoFQp6eWXXcOjd9+VRozwekQAEtnw4cODQQGQzHwdGJiTTnIrB2bQIHcQEwBE2uLFi/XII49o9OjRTC6Smu8DA2O5BhddJP3xh9S1q7R1q9cjApBItm/frm7duunJJ59URkaG18MBPBUXgYGt7D3/vHTssdLy5VL//l6PCEAiGTBggJo0aaILL7zQ66EAnouLwMBUqOD6G1iQMGaM9NJLXo8IQCJ48803NWPGjGB+AYA4CgyMnaNw551Z2wurVnk9IgDxzoKClStXqnz58ipatGjww3Tq1EnNmzf3enhAzPm2wdGh7N7tAoS5c6Uzz3Stk4sV83pUAHxn9Wrp22+lGjXcPuQhrF27VhtyHPl68skn67HHHtMFF1yg448/PgaDBfwj7gID88MP0imnSJs2SXfcIQ0d6vWIAPiKJSVdc41rfhIISKNGSb165fuPW8ni5MmTdZFlPQNJJq62EkKqVpWefdZdP/CALQV6PSIAvlopCAUFxm779nVfB5CYgYG59FKpTx/rVCZdcYWUYyUQQLKy7YOcbVLt2NYVK/L9I2whldUCJKu4DQzMo49KtWpJa9ZIPXu6IAFAkrOcAts+yHlsa/XqXo0IiCtxHRiUKeNaJhcvLr39tvTEE16PCPDWxo0bdf3116tmzZoqVaqUqlSpov79+2uTJeQkC0s0tJwCCwaM3T7zTK4JiADiPPkwp8cfd02PSpSQ5s93iYlAMlqyZInuvvtuXXXVVapTp45++OEHXXvttapXr55effVVJRXLKbDtA1spICgAkiswsP+DDh3cqoFtLXz6qVtNACBNmjRJV1xxhbZt2xau0QeAhNxKCAl1Qzz6aGnpUmtv6vWIAP+wbYS0tDSCAgDJExiY9PSslslWyjhpktcjArxnjXuGDBmia6x8DwCSZSshO2t4ZL0NypWTPv/c9TwAktHmzZvVunVrVahQIXgeQDFahAJIxsDAjmY+5xyXhNikiTRrlsS2KpLNli1b1LZtW5UuXVpvv/22SpYs6fWQAMSJhNlKCLE3RXbyYlqaO09hyBCvRwREKMP+gw/y1b3PVgratGmj4sWLB1cKCAoAJPWKQYgFB926uT4n1jLZDl4CEr3vfygo2L59e7DXf5ls5TmVKlVSkVBtPwAkW2Bgrr7aVStYCfPixVLFil6PCCggWyGwRJnsLX7txf377w9amz9z5ky1aNHioD9q1apVqlatGg8BgOTaSshuxAjpxBPdc2vv3rRMRuL3/W/evHmwz//BPggKACjZA4PUVLelYHkHb7whjRzp9YiAAqLvP4AYS+jAwDRsKA0b5q5vuslaxno9IqAA6PsPIMYSOscgxFZizz9fevddqW5dacECqVQpr0cFFAB9/wHESFIEBmb9eqlePWndOum666SnnvJ6RAAA+E/CbyWEHHmkNH68u376aWnyZK9HBACA/yRNYGBat5YGDXLXVgb+449ejwgAAH9Jmq2EkF27pLPOckczW+tkayZHzxcAAJJwxcAUL+5KGK2UcfZsaehQr0cEAIB/JN2KQYgd0dy9u+swawctnX221yMCAMB7SRsYmB49XEJilSquZfIRR3g9IgAAvJXUgcGWLa4BknWX7dRJmjRJSknxelQAAHgn6XIMsitb1uUbFC0qvfaa9NxzXo8IAABvJXVgYE49Vbr/fnd9ww3S1197PSIAALyT1FsJ2Vsmt2snTZsmnXyy9MknUsmSXo8KAIDYS/oVg+AkBKRx46RKlaQvv5QGDvTgkQAAwAcIDPbLyJDGjnXXTzwhvfWWh48KACCurV27Vt27d1dGRobKlCmjhg0b6jVLZosDBAbZnHeeO5rZ9Owp/fSTR48KACCu9ejRQ8uWLdObb76pL7/8Uh07dtRll12mzz77TH5HjkEOO3dKTZpIixZJLVq4vANaJgMACiI1NVVPP/10cNUgpGLFiho2bJh69+4tP2PFIIcSJVwJY5ky7hyFYcO8eWAAAPGrSZMmeuWVV7Rx40bt3btXL7/8snbs2KHmzZvL71gxOIQXXnDbCbZaYGcqNG4c2wcGAOC9zExpw4ZDfz893XXPzem3335T586dNXXqVBUtWlSlS5fWpEmT1KZNG/ldUa8H4FdXXilNnepWD7p1cy2Ty5XzelQAgFgGBTVrSjt2HPo+Vtq+bNmfg4PBgwcHg4Pp06crPT1db7zxRjDHYPbs2TrZ6uJ9jBWDXGzaJDVoIK1aJXXu7IIEWiYDQHJYtEhq1Cjv+y1c6Nrrh6xcuVLVq1fXkiVLVLdu3fDXW7VqFfz6yJEj5WfkGOTCVghCLZNfecVtLwAAkJvt27cHbwPWJCebIkWKBPMN/I7AIA9nnCENGeKu+/VzS0YAABxKrVq1gisDffv21SeffBJcQXjkkUc0bdo0XXTRRfI7AoN8GDRIatnSokCpSxdX0ggAwMEUK1ZM77zzjipVqqQLLrhA9erV07hx4zR27Fi1b99efkeOQT79/LNUr570yy/SjTdKjz4a3QcGABCfOQbxjhWDfKpcOSvHYPhw6Z13ovioAADgEQKDAjj/fKl/f3d91VXSmjVRelQAAPAIgUEBWSfEU06R/vc/64XtjmwGACSe9HTXpyA39n27XyIhx6AQli51+06WjGiBgiUnAgASs8nR+edLX37pPk9Lc+3y8+p8GM8IDArpueekPn1cj4M5c6TTT4/sAwMA8N6GDdKRR0r79rnPy5eXfv1VCY2thELq1Uu69FJp926pa1dp8+bIPjAAAO9NneqCAlspMMmwfUxgUEjWGnnUKKlqVem776S//S2yDwwAwHvv7K9AC519RGCAXNmS0sSJ7gTGF1+Uxo9nwgAgUezZI733nru2PANDYIA8NWki3XOPu7ZVg2+/ZdIAIBF8+qnLMbBthLPOcl8L5Rp4YdSoUWrevLnS0tKUkpISPL0xp40bN+ryyy8P3qd8+fLq1auXtm7dWqC/h62ECLj9dqlZM8nm3vINdu2KxE8FAHjp3XezthFKlPB+xcAOZ2rXrp3uuOOOQ97HgoKvvvoqeC7D22+/rQ8//FDXXHNNgf4eqhIiZPVq199g40bpllukf/0rUj8ZAOCF00+XFiyQnn9eattWOvZYOwfB+zd/M2fOVIsWLfTrr78GVwVCvvnmG9WpU0cLFizQqaeeGvzalClTguczrF69WpWthW8+sGIQIfYPZvRod/3ww1n7UgCA+LN+vQsKTLt2doSy/3MM5s2bFwwUQkGBadWqVfD45/nz5+f75xAYRNCFF2ZVJ1hXxHXrIvnTAQCx8t7+N3cNGrizcqwSze+Bwdq1a3WkNV3IpmjRoqpQoULwe/lFYBBhtlpw0kku2rTzFPz8jwgAkHuZ4nnnudvQioGXyYexQmAQYaVKSS+/7PpnT5niTmIEAMRnmWL79gcGBn4ODjIyMrTe3pVms3v37mClgn0vvwgMoqBu3ayA4Lbb3FndAID4MH++a3tseX1nnPHnwCCiK8GWuW6HL9jtYWrcuHGwhHFhthedGTNmaO/evToj9D+SDwQGUWLVIR07Sn/8IXXpIm3ZEq2/CQAQjW2Etm3deThRCwys3MHa57Zs6W7t81xYnsDixYu1YsWK4Odffvll8HNbETC1a9cOljP26dNHn3zyiebMmaN+/fqpS5cu+a5IMAQGUWKJKs8+66oV7DG8/vpo/U0AgGj0L2i/fxvBhJIPIxYY2AqBvYMM/TC77ds315WDkSNHqkGDBsEXftO0adPg52+++Wb4Pi+++KJq1aqlc889N1imePbZZwcbIxUEfQyi7MMPpRYt3GNubZO7dYv23wgAKKy1a6Wjj866Puood22rvqGDlLZvd/lkh8W2D2yl4GBfb95cXmLFIMqaNpUGD3bX117rDlwCAPjTlCnu1loBhIKCqCQf1qhx4A81dvBO9eryGoFBDNx5p3T22S7itJbJlncAAPB/mWJIxHMMbJ/ZlvgtGDB2+8wz7useYyshRjIzXctkO/PCKhUeeCBWfzMAID9275bS06VNm6yLoHTmmVnf27nTlaEb+35oW+GwWU6BJaLZSoEPggJDYBBDr70mXXKJS2KZOtVaVcbybwcA5Gb2bLf9W7Gi61wbejNvbKW3eHF3HSplTFRsJcRQp04uCdX2p7p3l/73v1j+7QCA/JYpFskWFESlKsHHCAxi7NFHrdbUZbv27OnfDloAkGwOVqYYEg+dDyOFwCDGSpd2LZPtbO///ld6/PFYjwAAkNNPP0mff+5WBmzFICdWDBBV9epJjzzirgcOlBYvZsIBwA+rBaef7hIQDxYYxMMJi5HAioFH7HjmDh2kXbtcy+Rt27waCQAgt22EnNsJBAaICos8R4+WjjlGWrZMuuEGJhoAvGBv0KZNO3j/guxYMUDUWUnM+PHuH5udnfHKK0w6AMTa3LmuAV2lSlKjRoe+HysGiAk7R+GOO9y1lTKuWsXEA4AXZYrt2v25S3F2oe9RlYCou/tuO0db2rxZuvxy130LABDbwCC3/ALDigFiplgxaeJE12LT2nDeey+TDwCxalf/1VfuRb9Nm9zvS2CAmKpWzZ2nYYYOlWbO5AEAgFhVI9i5CBUq5H5fAgPEXOfOUq9ebv/KthQ2bOBBAACvyxRDqEqAJx57TKpZU/r556wgAQAQeXZi4vTpeZcphpB8CE+UKSO99JI7xevNN6WnnuKBAIBonaZozeUyMqT69fO+f4AGR/BKgwbSQw+565tvlr74gscCAKK1jWCrBbmVKYYQGMBT/ftLf/2rW+rq2lXavp0HBACiUaaYn20EQ2AAT1mSy5gxbonr66+lm27iAQGASLFmckuXSkWKSK1b5/952XBWAjxj7TknTHD/GJ95RnrtNR4MAIjkNkKTJlL58vn7MwFyDOAH554rDRrkrnv3ds04AACx6XaYHVUJ8I0hQ9wZ4b/9RstkADhcO3ZIM2YUPjDYuzexH4N85GHCLy2Ty5aVPvpIuu8+r0cEAPFr1izp99/dsfcnn5z/PxcgMICf/OUv0siRWSsIVn8LADi8MsVQQmF+pJB8CL/p1k268kq3jGUtkzdu9HpEAJD4ZYohrBjAlx5/XKpRQ/rxR6lPH1omA0BBrFghffutVLSo1KpVweYusH8rIdFb1ZNjEGcsz8BaJlveweuvZ53ICADI/zbCOee4o+4LIkCOAfyqUSPpgQfc9Y03urPEAQDR20YwBAbwtQEDpLZtXdlNly4uwxYAcGjWWn7mzIKXKYYQGMDX7B/o2LHSkUdKS5ZIAwd6PSIA8DcLCuzN1HHHSXXqFPzPp1CVAL876ihp3Dh3/eST0n/+4/WIACA+uh0WpEwxhORDxAXbTrjlFnd99dXS6tVejwgA/McqCUKJh4XZRjBsJSBuDB3qEhKtr8EVV0h79ng9IgDwl+XLpe++k4oXl1q2LNzPCFCVgHhh/9CthLFMGdfqM1SxAAA4cBuhaVMpNbVwsxIgMEA8saZHTz3lru+5R5o71+sRAYB/HO42giH5EHGne3fXKtm2Eqx9sp3GCADJbutWt5pa2P4FIawYIO5YNGurBiecIP3wg3TNNYnfuhMA8vLBB9KuXdLxx0s1axZ+vgK0REY8shaflm9gfcAnTZJGj/Z6RADgn26HhSlTDGHFAHHr9NOl++5z1/37S9984/WIAMAbtmqavX/B4QiQfIh4Zp0Q7eQwawHatavr9gUAycbeGGVmSiVKSC1aHN7PChAYIJ7ZP2DripieLn3+uXTrrV6PCABiL7Ra0Ly5VLr04f2sFFoiI94dfbQ7T8GMGCG9/bbXIwKA+CtTDCH5EAnBfhnsaGbTs6f0889ejwgAYmPzZmn27MMvUwxhKwEJ48EHpfr1pQ0bXK8DWiYDSAbvvy/98YdUvbprAne4AuQYIFFY0s3LL7v9tRkzpH/9y+sRAUB8bSMYAgMkFGvq8fjj7vrOO6WPP/Z6RAAQmzLFSGwjGJIPkXAsx6Bz56yWyZs2eT0iAIiOJUukn36SSpWSmjWLzM8MsJWARGPR7siRUrVq0qpV0nXX0TIZQGIKrRZY7wILDiIhQEtkJKLy5aWJE6UiRVzrZOt1AACJJlLdDrNjxQAJq3Fj6Z//dNd//7u0fLnXIwKAyLFt0jlzIptfYAgMkNCsE6ItsW3bJnXpIu3c6fWIACAypk1zuVSWdG2nzUZKgBwDJDLbShg/XqpYUfrsM+mOO7weEQD4s0wxhKoEJLxjjsk6lvnf/5amTPF6RADgvzLFEJIPkRQ6dJD69XPXV14prV3r9YgAoPAWL3bPY9bQrWnTyM5kgK0EJAvrhHjyydL69S442LvX6xEBwOFtI9ix89b1NZICBAZIFiVLupbJVus7darbVgCAeBStbQRDYICkUqeO9Nhj7vr226UFC7weEQAUzK+/SvPmRS8wSElxt4m+qrp/YQSQeveWOnWSdu+WunaVtmxhVgDED1vxtBdte6NTtWrkf36ArQQkG4uGn31WOu44aeVK1/wIAJK522F2VCUgKR1xhGuZbL8A1udgwgSvRwQAebOVglDJdbQDg71sJSDZnH22dPfd7toOWrLVAwDws0WLXGVVaqp01lnR+TsCBAZIZv/4h6sB3rrV5Rvs2uX1iAAg7zLF1q2l4sWjM1MBAgMke8tk20awrQWrUBg82OsRAYA3ZYohVCUg6VkS4vPPu2l46CGX8QsAfrNhgzR/fvQDg0Agq+1yIqNcEbm6+GLp2mvddY8ebg8PAGLt+++/V0pKykE/hgyZFHyxrldPOvbY6I0hwFYC4FgnxLp1pXXrpKuuSvyMXAD+c9xxx2nNmjUHfNx7771KTU3V2rXnRX21wBAYAPtZq2RrmWytky3BZ8QIpgZAbBUpUkQZGRkHfEyePFmXXnqZZsxIjWqZYgiBAZDNSSdlnaEwaJArDQIAryxcuFCLFy9W48a9gjkGaWlS48bR/TtTaIkMHMhyDS66SPrjD1fCaKWMAOCF559/XrVr19bq1U2Cn7dpIxUrFt2/M0DyIfDnaPm556RjjpGWL5f692eGAMTe77//rokTJ6pXr17h/gXR3kYwbCUAB1GxovTiiy5IGDNGeuklpgnAYVi9WvrgA3ebT6+++qq2b9+u887rET4Jtl276D8KAaoSgINr1ky6886s7YVVq5gpAIVgjVLsGMSWLd1tqHFKnn/seXXo0EELF1YKft6ggXT00dF/BAIEBsCh3XWX1KSJtHmz1K2byzsAgHyzFYJrrsmqf7bbvn3zXDlYsWKFPvzwQ/Xu3Tsm3Q6zI/kQyEXRou4UxnLlpI8/lu65h+kCUADffvvnpih79tgrf65/bPTo0Tr22GPVsmUbvfde7PILDCsGQB5s5e/ZZ931Aw9IM2YwZQDyqUaNrFfa7Ie0VK+e6x+7//77lZmZqU8/DejXX915LmecEZtZD1CVAOTt0kul3r1d7/ArrnA9ywEgT9a7eNQoFwwYu33mmXz3NA5tI1iZoq1gxkKAHAMgf4YPl2rVktaskXr2TPwDRgBESK9edgiCq0qwW/s8n2JZphhCYADkU5kyrmWynYH+9tvSE08wdQDyyVYImjcv0OlH9iYk1H21bdvYzXSAFQMg/045RXr4YXc9cKD0+efMHoDomDLF3Z56qnTUUbGb5RRaIgMF06+fdP750s6dUpcu0rZtzCCAyPNiG8GQfAgUUKgbojUaWbpUGjCAKQQQWbt3S1OnxrZ/QQhbCUAhpKdLEya4IMFKGSdNYhoBRM68edKmTa49+2mnxXZmA+QYAIVj3U1vu81d9+kj/fADMwkgMkJlipZ0GKp0jJUAgQFQePfe65qOWGRvLZNt+Q8AIhUYxDq/wJB8CBwGOxfdTl5MS5PmzpWGDGE6ARyen36SvvjCvUDHskwxhBUD4DAdf7w0cqS7vu8+adYsphTA4VcjnH66y2eKtQAtkYHD17Wr64ZoZ6VYy+RffmFWAcRXmWIIKwZAhIwYIZ14ojtNNXSuAgAUxK5d0rRp3pQphhAYABGSmuryDSzv4I03srYXACC/5syRtmyRKlWSGjXyZt4CVCUAkdOwoTRsmLu+6SZpyRJmF0DBtxFstSDnac2xkkJLZCCybrjB/VLv2OFaJv/+OzMMoGBlil5tIxiSD4Eo/FK98II79OSrr6Sbb2aKAeQtM9M9Z9hzSJs23s1YgK0EIPKOPFIaP95dP/20NHkyswwgf9sIZ54pVajg3WwFCAyA6Gjd2h3NbHr1kn78kZkG4M9uh9kRGABRZA2P7Cz1X3+VLr9c2rOH6QbwZ3aM+/vv+yMwSCH5EIie4sVdCaOVMs6eLQ0dymwD+DN7fti2TcrIkOrX93aGAmwlANFVvbrLMwgdumR1ygBwqDLF0Dt2rwRoiQxEn7VJ7t7dtUy2UxhtawEA/JZfYFgxAGLkySfd6oGVJPXpQ8tkAM6qVdLSpVKRIlKrVt7PSoCtBCA2ypaVJk6UihaVXntNeu45Zh5A1jbCWWdJ5ct7PyMBAgMgdk47Tbr//qwOiV9/zewDyc4P3Q6zoyoBiDHrhGg9DqxVsrVMttbJAJKT/f7PmOGf/AJD8iHgwS/duHHu9LQvv8xqggQg+cya5d4kHHOMdPLJ8oUAWwlA7Fmt8tix7vqJJ6S33uJRAJJ9G8HrMsUQAgPAI/ZEYEczm549pZ9+4qEAkjXx0C/bCIbAAPCQJSI2aCD98ovrc0DLZCB5rFghffutq1Q691z5RgotkQHvlCghvfyyVKaM9MEH0rBhPBpAsq0WnHOOlJYm3wiQYwB468QTXZ6Buesuad48HhEgGfip22F2VCUAPnDllVLXrm4rwVomb9rk9YgARNP27W6V0E/9C0JYMQB8sqdnBy0df7z0/fdS3760TAYS2cyZ7qjlKlWkOnXkKwG2EgB/KFfOHdFsiUivvCK98ILXIwKQTGWKIQQGgI+ccYY0ZIi77tdPWrbM6xEBiLR9+/xZphhCVQLgM4MGSS1buj1Ia5lsy40AEsfy5dJ330nFi7vfdb8JBLICmES2/38T8D/7pRw/XqpYUVq8WLrtNq9HBCAa2whNm0qpqf6b2wA5BoD/VK6clWMwfHjWEwmA+OfnbQRDYAD41PnnS/37u+urrpLWrPF6RAAO19at7uAkP5YphhAYAD5mnRBPOUX63/+kHj2kvXu9HhGAw2G9C3btcqXJNWv6cy5TaIkM+FfJkq5lcunS0vTp0sMPez0iAJHqdui3MsUQkg8Bn6tVS3rsMXf9j39In3zi9YgAFIZl+WfvX+BXAZIPAf/r1Uu69FJp927XOnnzZq9HBKCgvvlGysx0h6e1aOHf+QsQGAD+Z0uOo0ZJVau6+ue//c3rEQEoqNBqQfPmbnvQrwIEBkB8KF9emjhRKlJEevFF1+sAQPzwe5liCMmHQBxp0kS65x53basG337r9YgA5Idt/82eHR+BQYAVAyC+3H671KyZq4e2fAMrfQLgb++/L/3xh1S9uvvwswAtkYH4YlsJEyZIFSpICxe6SgUA/hYv2wiGFQMgDh17rPT88+7aehu8957XIwIQiTLFefPmqWXLlipTpozS0tLUtGlT/f777zGd3ABbCUB8uuiirOoE64q4bp3XIwJwMEuWSD/9JJUq5bYBcwsK2rVrpzZt2uiTTz7RggUL1K9fPwVCr9QxEiAwAOKXrRacdJK0fr07T4GWychN37599Ze//EWlSpVSpUqVdOGFF2rp0qVMWpSFVgvsiGULDg5lwIAB6t+/v2677TbVrVtXNWvW1GWXXaYS1vgghlJoiQzEL3uSsZbJ1jp5yhR3EiNwKI0aNdKYMWP0zTff6L333tO+ffuC70737NnDpEVRfrYR1q9fr/nz5+vII49UkyZNdNRRR6lZs2b66KOPYv7YBJIk+TBln/0GAAnqmWeka6+VihWz5Uh7AfB6RIgHX3zxhU455RStWLEiuJKAyLDuhhs2uOstW9xKga3m/ec/Lj8oPV2qUuXAP/Pxxx+rcePGqlChgh5++GHVr19f48aN01NPPaUlS5aoRo0aMXt4fvzRjc8WKnbsUMIq6vUAgGi65hpp6lTp9delLl2kRYuksmWZcxzatm3bgqsHxx9/vI477jimKoJBgZ2aeLAX1AsvdLe2wrds2YHBwd79+4C23dOzZ8/gdYMGDfT+++9r9OjReuCBB2L2GAXIMQDin+0JPvusezeyYoV0/fVejwh+Ze9AU1NTgx/vvvuupk2bpuLFi3s9rIRhKwV5vcu274dWFEKOPvro4G2dOnUO+Hrt2rWVadFGDAUIDIDEYH0NrFWy/VKPHevaJwM5XX755frss880a9YsnXjiicHkth2JvF4cJ6pVq6bKlStrmS0lZLN8+XJVtUNSYiiF5EMgcTRtKg0e7K4t58AOXEKCW71a+uADd5sP5cqVC+5XW338q6++GqxKmDx5ctSHidylpKRo4MCBGjFiRPBxsbyPwYMHBx+fXna8agwFkiT5kBwDJI0773TtVy2Z2Vom260lJSIBWZcrSzCx/Wl7NrcjOAvwImI52faxc+fOqA4T+XPjjTcGV2+sbHHjxo3BxFDb6ol1YmggW9sECw5CKwiJhqoEJBXbkjzlFOm336TbbpNimLeEWLEVAltizt68wvplf/+9SzbJ4bvvvtMrr7wSLE+0HgarV6/Wgw8+qDlz5gTLF61MDofv44+lxo3zvp+1M2/Y0J8zvnGjVLGiu9692/2zSkSxbRsFeMyynZ97zl0PGyZNn+71iBBxdrRmzo5W1o/Ask8PomTJkpo9e7bat2+v6tWrq3Pnzipbtqzmzp1LUBAhq1ZJV1+tuBfI9oqZyE3TWDFAUurb160uZ2RYzbpUqZLXI4JXKwaIrjfflK680q3S5YefVww2b7ZcFHdteakxbrwYM6wYICk9+qiVO0lr10pWGp3oyURJxV78LeoLrfParXW6IiiIKTtKeeBA16PAgoL69fN+IbU+BtbkyK9SsuUUsGIAJCBbKTj9dMnyyx57TOrf3+sRIeIrB7Z9UL06QYEHU9+5szR3rvv8xhvd1p0F4jn7FGR3sM6HfrJtm5SamnVdurQSElsJSGpPPin16ydZH5v58927GgCFZ51GL7/cBQBpadKYMVLHjokxo7//nhUMWEvnUJCQaNhKQFKz45k7dJB27XItk+1dAICCs/zOu+6S2rVzQUGDBq4FeaIEBcmUfEhggKRme4ZW8l65suvRfsMNXo8IiD+2RdC6tTRkiMvXseRe20ZItPOnAgQGQHKwfc0JE7KChFde8XpEQPyYOdOtDliTyTJl3O/SyJEukTDRpCRJ8iErBoCkFi2kO+5wU2EN86yyDcCh2Qvj/fdL557rVgzq1pUWLHD5BYkqWVYMSD4EspVXNWsmzZvnOrR9+KFUlKbhwJ/88ovUvbv07rvu8x497HRKt2KQyPbtywoO1q9P3P4nrBgA+9m5CXbyomVSW3Bw771MDZCT/W7Y1oEFBbZdYJ1EX3gh8YOC0FZCMpywSGAAZFOtmuuNY4YOdfunANy75eHD3UmlP/4o1ajhzj+ws6kS9TChgwmtGBAYAEnEGrNYX3d7IgzVYwPJzDoXduokDRjgDg+69FLp00/dgWTJJkBgACSnESOkmjWln39274homYxkZb0IGjWSJk92222PP+4qd2zLLRmlsJUAJCfbL33pJdcR0Q6BscQqIJlYMGxlh02a2NHU7lyqOXNcp9Bk2jo41IpBIr9ZIMcAOARLsHroIXd9883ubAUgGWzdKl1xhXTdde4skQsukD77TDrtNK9H5r0AWwlAcrODlf76V/fk2LWrtH271yMComvJEhcAWIWOHUz5r39J//mPdMQRzLwhMACSnC2Z2iEwGRnS119LN93k9YiA6Bk71p04unSpdMwx0qxZ0i23JPfWQU4EBgCCTUzGj3dPjs88I732GpOCxGKnBvbuLV11lbtu08ZtHZx1ltcj858Ukg8BmFatpEGD3FzYE2hmJvOCxLB8uXTmme6cEHvR++c/pXfeSdyufocrQPIhgBA7Oc6WWa2m2/obWD03EM/+7/9cKaIl1h55pDRtmjR4sMstwMGxlQDgTy2Ty5aVPvpIuu8+JgfxyZJpr7/eNfOyCgTrZmhbB3YgEnJHYADgAHa+vNV2h1YQZs9mghBfVq2Szj5beuIJ9/ntt0vvvy9Vruz1yOJDgHJFADl16yZdeaXrlW5bChs3MkeID9asq2FD1864QgXpv/91Rydzimj+BQgMAByMtYWtXt0dJtOnT2J3QUNiHCluybMXXuhyZM44w20dtG/v9cjiTwpVCQAOxvIMXn7Z5R28/nrWiYyA36xeLbVo4RoVmRtvlD78UKpSxeuRxacAVQkADsWyuR94IOvJ9quvmCv4y9SprrW3nXFghx5ZD45HH3VngKBwAmwlAMiNHUPbtq20Y4fUpYtrDgN4bc8e6a67pHbt3LHhFhzYKYkdO3o9svgXIDAAkNeThLWRtRpw6zE/cCDzBW+tW+c6F1rVjOW+9O0rzZ3rKmpw+AIEBgDyctRR0rhx7vrJJ92BM4AX7GyD+vWlGTPc0eETJrjy2pIleTwiJYXkQwD5YdsJdjSzufpql/AFxIqVzlq+S8uW0tq1Ut260oIFrpwWkRUg+RBAflk9uCUkWl8DO8ve9nmBaPvlF+mCC6Q77nABQo8e0vz5Uu3azH00BNhKAJBflun90ktuCdeWdEMVC0C0fPyxHY/cXO+8Y+vb7mPcuBTdfPO1THqUBAgMABREjRrSU0+563vucUlfQKRZUuHw4dI557hzD9LS+mj69DVas8Z9PPTQQ0x6lASSIDAo6vUAgETTvburH3/xRdc+efFiqXx5r0eFRLFpk8tjscZaxo5HvuSS0jr33Ayvh5YUUkg+BFCYJw5bNTjhBOmHH6RrrqFlMiLDehHYWQcWFFjXTWvNXaeONGnSi0pPT9dJJ52k22+/Xdu3b2fKoyTAigGAwrAuc5ZvcNZZ9qTtqhZ69WIuUfitA2u7fcMNbuugalX37+q00yy3pZuqVq2qypUr64svvtCtt96qZcuW6fXQkgIiKpAEVQkp+/Yl8v8e4K1hw6TbbpNKl3Yn2pEpjkPJzHRdCnOyN/9Dh0pTprjPrQLBmmodccTBf86MGTN07rnnasWKFfoLXY0irlEjt3Lz7ruus2QiIscAiCLrhDh9uvvo2tVlkRe22cyoUaM0ceJELVq0SFu2bNGvv/6q8iQvJExQULOma62dGytJvO++rH3ugznDjk6UCAyiJJAEWwn7/xcBROUXLOC6IqanS59/Lt16a+F/lu0bt2vXTnfYqwMSiq0U5BUUmE6dcg8KzGLLdpV09NFHR2h0SLbAgBUDIMrs+dmWfv/6V2nECKl1a+n88wv+c260IxwlzZw5M/KDRNTZpu2uXdK2bdLWre42dG1BY2GsXLkyuIrUvn17VaxYMZhjMGDAADVt2lT16tWL9P8ClBxVCQQGQAy0b++OZrba85493QtB5cpMvR/t3p31op3zRfxgL+oFuV+ku2EWL15c06dP1/Dhw7Vt2zYdd9xx6tSpk+68887I/kVIquRDAgMgRh580N7tu74GF13kDlwqUuTP97NthypVeFhyY0/KlpRXkBfu/L6oW9Z/LLpkpqa6Lpn2Ye9Cv/mm4D/HAoFZ1mYTMRNgKwFApJQoIf373+6gGzvg5vTTD34/S05ctiz+g4Pcls4L+sJ9sM+jzYK20Au3fWR/IT/UdX6/VzTHWzLLcrdsd/hfgMAAQCSVK5f3fSwJzZLRYhUYxNPS+cFYKWhhX6xzu58Fcnkl+iH5BAgMAPht6fznn93XbNXBnqTicem8MO+yD3ZdqlTWEzUQCykkHwLwQufO7t32gUvna/d/rAjep02bLyWVlWRLCxUiunQeqRfu0HXOpXP8Oa/EtpByK1m079v94K0AKwYAvLDCvfbnMFLSvdk+bxr87wknjNHxx1/F0nkcs20jyys5WOfDEJJS/SFAVQIAL9ghTPXr53wHfo9KlbqHpfMEDg7iPeE0GQRYMQDgBetqa6foAfCXQBIEBqTtAACQ3xfNgLslMAAQ0SSz3JBkBvhXClUJACKJJDMgvgVIPgQQaSSZAfErwFYCAAAIITAAAABhBAYAACCpkg8pVwQAIL8vmoGs80sSFYEBAAD5fdEMuFtWDAAAgAgMAABAGIEBAAAIIzAAAABhVCUAAIAwqhIAAEAYWwkAACCMwAAAAIQRGAAAgDCSDwEAQBjJhwAAIIytBAAAEEZgAAAAwggMAABAGMmHAAAgjBUDAAAQRlUCAAAIY8UAAACEERgAAIAwAgMAABBGVQIAAAgj+RAAAISxlQAAAMIIDAAAQBiBAQAACCP5EAAAhLFiAAAAwqhKAAAAYawYAAAAAgMAAPBnrBgAAIAwqhIAAEAYyYcAACCMrQQAABBGYAAAAMIIDAAAQBjJhwAAIIzkQwAAEMZWAgAACCMwAAAAYQQGAAAgjMAAAACEUZUAAADCqEoAAABhbCUAAIAwAgMAABBGYAAAAMJIPgQAAGEkHwIAgDC2EgAAQBiBAQAAKHRgsHLlSl188cWqVKmS0tLSdNlll2ndunXys/3/iwAAIJKBwbZt29SmTRulpKRoxowZmjNnjnbt2qULLrhAe/MbWXigqNcDAAAgEasS5syZo++//16fffZZcLXAjB07VkcccUQwUGjVqpX8iBUDAADy+6IZcLf79uV93507dwZXC0qUKBH+WsmSJRUIBPTRRx/5ds4JDAAAyENmprRokeUMuM+3bXOfhz7s+zmdeeaZKlOmjG699VZt3749uLVwyy23aM+ePVqzZo1v55zAAACAXGRmSjVrSo0aSddd5762YoX7PPRh388ZHFjC4aRJk/TWW28pNTVV5cqV02+//aaGDRsGVw38ihwDAABysWGDtGNH7lNk37f7Valy4Nct+dAqEzZs2KCiRYuqfPnyysjI0AknnODbOScwAAAgytLT04O3lnS4fv16dejQwbdzTmAAAECUjBkzRrVr1w5uK8ybN0833HCDBgwYoJq29+BTBAYAAETJsmXLdPvtt2vjxo2qVq2a/vGPfwQDAz9L2bcvP0UXAAAkp0WLXIJhXhYulBo2VNzzb1okAACIOQIDAAAQRmAAAEAu0tOtY2HuU2Tf3194EPfIMQAAIA+Zma5PwaFYUJCzh0G8IjAAAABhbCUAAIAwAgMAABBGYAAAAMIIDAAAQBiBAQAACCMwAAAAYQQGAAAgjMAAAACEERgAAIAwAgMAABBGYAAAAMIIDAAAQBiBAQAACCMwAAAAYQQGAAAgjMAAAACEERgAAIAwAgMAABBGYAAAAMIIDAAAgEL+HxXd5sL/wFhUAAAAAElFTkSuQmCC", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -722,7 +620,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 5, 6, 8, 9])" + "plot_partial_hull(pts, [0, 1, 5, 6, 8, 9])" ] }, { @@ -736,16 +634,19 @@ } }, "source": [ - "Point 8 is a right turn, so we remove 8. But then 6 and 5 are also right turns, so they too are removed. We proceed on to 10:" + "Point 8 is a right turn, so we remove 8. But then 6 and 5 are also right turns, so they too are removed. We proceed on to 10:" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -754,9 +655,9 @@ "outputs": [ { "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -764,7 +665,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 9, 10])" + "plot_partial_hull(pts, [0, 1, 9, 10])" ] }, { @@ -783,11 +684,14 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -796,9 +700,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -806,7 +710,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 9, 8])" + "plot_partial_hull(pts, [10, 9, 8])" ] }, { @@ -825,11 +729,14 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -838,9 +745,9 @@ "outputs": [ { "data": { - "image/png": "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\nQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -848,7 +755,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 8, 7, 6, 5])" + "plot_partial_hull(pts, [10, 8, 7, 6, 5])" ] }, { @@ -862,16 +769,19 @@ } }, "source": [ - "Adding 5 reveals 6, and then 7, to be right turns; remove them and move on to 4:" + "Now 6 is a right turn and must be removed. We could continue step-by-step, but I'll just skip to the end:" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -880,9 +790,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -890,133 +800,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 8, 5, 4])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Remove 5 and continue on to 3 and then 2:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 8, 4, 3, 2])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Now 3 is a right turn; remove it and continue on to 1 and finally 0:" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 8, 4, 2, 1 ,0])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Adding 0 makes, 1, and then 2 be right turns, so they are removed:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_partial_hull(sorted(Points(11)), [10, 8, 4, 0])" + "plot_partial_hull(pts, [10, 8, 4, 0])" ] }, { @@ -1035,11 +819,14 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 18, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -1048,9 +835,9 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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cOONN2Y5vuhXBAbZtHSpa5mcni717i099lj+PjEAAG99+aXUsGHuAoMgy7oBgt2qVs0dYTSPPy69/z43CwAQPgQGOXD22VKvXu76iiukZcvy6VkBAATG/PkKFQKDHBowQKpf301hvOwyV38AAAifChVcn4K96dbNFSyGBTUGufD9927fyU6kWKBw8815/8QAALy3eA+dD9escf//z5jhCtJHjpQuvFCBR2CQS4MHS127unOudubVmmIAAKJl40apfXvpnXesb4H07LMugxBkbCXkUpcu0kUXSVu3um+K1avz9okBAPhfsWLS6NHuhaJtLXfvLt17rzvuGFQEBvvQRev556WDD5Z++km65pq8fWIAAMFQuLD03HPSnXe69//9b5uVIG3bpkBiK2EfTZsmNW3qvgFeeUUKQO8KAEA+eeopd3rNMgYXX+x+LgStIR4Zg31k07juustdW9bgxx/z4FkBAATSdde5GTs2kOn116WzznJFinnh+eefV7NmzZSamqqUlJT4aOedrVy5Uh07dox/TZkyZdSlS5d458WcIDDIAzZH4bTTJLv3Vm+weXNe/K4AgCBq1841wStVSvr4Yzep8fff9/33teFMrVu31m233bbbr7Gg4JtvvtH48ePjcxk+/fRTdcthNSRbCXnEhm1Yf4OVK6Ubb5T+85+8+p0BAEE0c6Zk85Ks702tWtK4cW66476aOHGimjdvrj///DOeFUj47rvv4sObvvjiCx1//PHxj40dOzY+tGnJkiWqZi18s4GMQR6pXl168UV3/cgj7hsAABBdxx/vjrPXrCktWCCdcoo0Z07+/XnTp0+PBwqJoMC0bNkyPv75888/z/bvQ2CQh2wKV+J0gnVFXLEiL393AEDQHH64Cw5sCN/y5a5YfdKk/Pmzli9frkqVKmX5WOHChVWuXLn457KrcD6sLdIsW/Dpp9K8eW6ewv/+55peAACiqVo1FwzYi0f7+XDGGe5F5Akn7PrrbbuhcWN5hsAgjxUvLr36qkshjR3rJjHecENe/ykAgCApU8b9TGjVSpo8WXriib0fhc9pcFClShX9vlOV49atW+MnFexz2cVr2Xxw5JEuIDD9+rlZ3QCAaCteXLrqqux9rTXOy6nGjRvHjzDOyvRDZ8KECdq+fbtOPPHEbP8+BAb5xE6H2DCNLVukSy7Ju3OsAIDgKlQo97/W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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1058,7 +845,7 @@ } ], "source": [ - "plot_partial_hull(sorted(Points(11)), [0, 1, 9, 10] + [10, 8, 4, 0])" + "plot_partial_hull(pts, [0, 1, 9, 10] + [10, 8, 4, 0])" ] }, { @@ -1074,9 +861,9 @@ "source": [ "That's all there is to the basic idea of the algorithm, but there are a few edge cases to worry about: \n", "\n", - "* **Degenerate polygons**: What happens when there are only 1 or 2 (or zero) points? Such a set of points should be considered convex because there is no way to draw a line segment that goes outside the points.\n", + "* **Degenerate polygons**: A triangle has 3 sides, and no \"true\" polygon has fewer, but it is possible to have a set of 0, 1, or 2 points. Such a set of points is convex because there is no way to draw a line segment that goes outside the points.\n", "\n", - "* **Colinear points:** if three or more points are colinear, we should keep only the two \"outside\" ones. The rationale for not keeping them all is that we want the convex hull to be the minimal possible set of points. We need to keep the outside ones because they mark true corners in the hull. We can achieve this by rejecting a point when it is a \"straight\" turn as well as when it is a \"right\" turn.\n", + "* **Colinear points:** if three or more points are colinear, we could keep them all on the hull, or we could keep only the two \"outside\" ones. I decided to make the convex hull be the minimal possible set of points, and thus only keep the outside points. \n", "\n", "* **First and last points:** An astute reader might have noticed that our algorithm only rejects the middle point, point B, in the A->B->C turn. That means that the first and last point in sorted order will never be a candidate for rejection, and thus will always end up on the hull. Is that correct? Yes it is. The first point is the leftmost point, the one with lowest `x` value (and if there are ties, it is the lowest-leftmost point). That is an extreme corner, so it should always be on the hull. A similar argument holds for the last point in sorted order.\n", "\n", @@ -1094,16 +881,21 @@ } }, "source": [ - "# Implementation of Convex Hull Algorithm" + "# Implementation of Convex Hull Algorithm\n", + "\n", + "We're ready to code up the algorithm: sort the points, find the upper and lower half hulls, and put them together:" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 19, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -1111,61 +903,28 @@ }, "outputs": [], "source": [ - "def convex_hull(points):\n", - " \"Find the convex hull of a set of points.\"\n", - " if len(points) <= 3:\n", + "def convex_hull(points) -> Polygon:\n", + " \"\"\"Find the convex hull of a set of points.\"\"\"\n", + " if len(points) <= 3: # Degenerate polygons and triangles\n", " return points\n", - " # Find the two half-hulls and append them, but don't repeat first and last points\n", - " upper = half_hull(sorted(points))\n", - " lower = half_hull(reversed(sorted(points)))\n", - " return upper + lower[1:-1]\n", + " # Find the two half-hulls ...\n", + " sorted_points = sorted(points)\n", + " upper = half_hull(sorted_points)\n", + " lower = half_hull(reversed(sorted_points))\n", + " return upper + lower[1:-1] # ... and append them, but don't repeat first and last points\n", "\n", - "def half_hull(sorted_points):\n", - " \"Return the half-hull from following points in sorted order.\"\n", + "def half_hull(sorted_points) -> list[Point]:\n", + " \"\"\"Return the half-hull from following points in sorted order, eliminating right turn points.\"\"\"\n", " # Add each point C in order; remove previous point B if A->B-C is not a left turn.\n", " hull = []\n", " for C in sorted_points:\n", " # if A->B->C is not a left turn ...\n", - " while len(hull) >= 2 and turn(hull[-2], hull[-1], C) != 'left':\n", + " while len(hull) >= 2 and not is_left_turn(hull[-2], hull[-1], C):\n", " hull.pop() # ... then remove B from hull.\n", " hull.append(C)\n", " return hull" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can try it out on our 11 random points, but it is not easy to tell at a glance whether the answer is correct:" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[Point(x=0.3253748207631174, y=1.7900592822602743),\n", - " Point(x=1.3968712854329428, y=0.4086086096198411),\n", - " Point(x=2.7310024878562857, y=0.05565070635109892),\n", - " Point(x=2.835445111495586, y=1.375183795456248),\n", - " Point(x=2.7309330192147097, y=1.4818235191572668),\n", - " Point(x=1.8813296288048804, y=1.666404092312656)]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "convex_hull(Points(11))" - ] - }, { "cell_type": "markdown", "metadata": { @@ -1179,11 +938,14 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 20, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -1191,33 +953,43 @@ }, "outputs": [], "source": [ - "def plot_convex_hull(points):\n", - " \"Find the convex hull of these points, and show a plot.\"\n", + "def plot_convex_hull(points) -> None:\n", + " \"\"\"Find the convex hull of these points; plot the hull in blue and the interior points in red.\"\"\"\n", " hull = convex_hull(points)\n", " plot_points(points)\n", " plot_points(hull, 'bs-', closed=True)\n", - " print(len(hull), 'of', len(points), 'points on hull')" + " print(len(hull), 'of', len(points), 'points are on the convex hull')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First the set of 11 random points, and then 1000 random points:" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "6 of 11 points on hull\n" + "6 of 11 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\nCnkRkQr7f1PEM2SRRT6YAAAAAElFTkSuQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1225,7 +997,34 @@ } ], "source": [ - "plot_convex_hull(Points(11))" + "plot_convex_hull(pts)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "16 of 1000 points are on the convex hull\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_convex_hull(Points(1000))" ] }, { @@ -1237,23 +1036,26 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 23, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "8 of 8 points on hull\n" + "8 of 8 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\nTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAFUNJREFUeJzt3U2InPUdB/BfahIj9JZAUtDQF9qcFLSsRr0IfTlI7aFZXBW1pWKi2F3osYWC2ELtqbBLjcSA4AvGgykE2rsojdZWbKSFXHqIhRhIDj01jZEt/052djfZ3dndzMzzf/l8LsbdyeZx3Ml35zvf55kt8/Pz8wEAEfEF9wIAC4QCAH1CAYA+oQBAn1AAoE8oANAnFADoEwoA9AkFAPqEAgB9QgGAPqEAQJ9QAKBPKADQJxQA6BMKAPQJBQD6hAIAfUIBgD6hAEDf1sVfQlvOnIk4f371z+/aFbF37ziPCLonFGg2EPbti7h4cfXb7NgRcfq0YKAt6iOalJ4hrBUISfr8Ws8koEZCAYA+oQBAn1CgSZ9+2vURQJ6EAs2Yn494552IBx+MeOCB9f2eI0cizp0b9ZFBPrbMz6eHCtQrvWD8xhsRs7MRH3208d+/bVvE1FTEzEzExMQojhDyIRSo1iefRBw+HPHSS4sroptuinj00YhvfSvioYcGf41bb434+OPFf9+/P2J6OmJyMmL79tEdO3RFKFCV9Lz33Xcj5uYijh+P+Pzz3sfTSWjPPBPxxBMRO3du7DyFVB+lr/fmmxGXLvU+t2dPxNNPRxw6FLF793j+22AchAJVV0T33derfdJrCFu3Xt8ZzSkc0msM6dnH2bO9j6mWqI1QoNqKKNU8qf4ZtvRsIT0LSQF08uTix1VL1EAoUG1FNA4ffKBaoi5CgaoronFRLVELoUD2uqiINku1ROmEAlnKqSLaLNUSJRIKZOU//4k4dizPimizVEuURCiQVUWUJp8XLuRdEV1PtfTWW71nP1ZL5Eoo0JkaKqLNUi2RK6HA2NVYEW2WaoncCAXGpoWKaLNUS+RCKDBSLVdEm6VaoktCgZFQEV0/1RJdEAoMlYpodNVSeg3mvfcWP+5aS4yCUOC6qYjGXy2lF+o/+6z3MZfxZpiEApumIuqOaolREQoMtSL6yU8ibrvNnTouqiWGTSiwLiqi/KmWGAahwJpUROVRLXE9hAIrUhGVT7XEZggFrqmI0vTx9793ollNVEusl1Dg/xVRekezNHVs/VpEtVMtMYhQaJiKqF2qJVYjFBqjIuJqqiWWEgqNUBExyKef9s49efHFiLNnex/bti1iaqpXI05MuA9bIBQqpyJio1RLbRMKFVIRMSyqpfYIhYqoiBgV1VI7hEIFVESMi2qpfkKhUCoiuqZaqpNQKIyKiFyrpXTl3PTrxGqpXEKh4Ipox46Ixx5zuWryoFqqg1DImIqIUqmWyiUUMqQiohaqpfIIhYyoiKiVaqkcQqFjKiJao1rKm1DoiIqI1qmW8iQUxkxFBMuplvIiFMZARQTro1rqnlAYIRURbI5qqTtCYQRURDAcqqXxEwrrcOZMxPnzq39+166IW27xpvfQdbW0nsfq3r3+P61FKAyQvsn27Yu4eHH126TrvHz96xH/+Mfix7zpPYy3Wvre9yL+8Ifes4vVpEvDnD4tGNYiFAb48MOIb34z1sW1iKD7ammQv/414o47RnlkZftC1wdQi/Qetv/6V+8nmNtu6/pooH7bt0c8/HDEyZMRf/5zxP33d31EdRAKQ/LDH0bs3DmsrwZsxMRExC9/6T4bBqEAQJ9QAKBPKADQJxQA6BMKA6STXW68cfAUNd0O6E56DKbH4lo8VgdznsI6/OxnEc8/3zuJ7fXXI7ZsWf55Z0lCHlY6o/nvf494/PGIrVt75zOs97yjVgmFAS5fjvja13rfbC+/HPGjH43nfwwwPPv3R7z/fsRzz0X84hfu2bWojwY4caIXCOnZwEMPDbo1kOvJpUm6NMZal8FAKAyUTqFP0gW3BvWVQJ4mJ3sXzzt7tndpDFbnmcIaTp2KePvtiBtuiHjqqbVuCeR+SYyFx/DCD3qsTCisIV2mNzlwIOLmm9e6JZC79Gw/XU01vdicLsPNyoTCKi5ciHjtteV9JFCuVB9NTS3/gY9rCYVVHD3aew+F22+PuOee1W4FlGThB7z0Rj3nznV9NHkSCqvMUF94YfGb6OrzEoByr6Z61129d25Ll7nnWkJhBWaoUC/z1LUJhRWYoUK9zFPXJhSuYoYKdTNPXZtQuIoZKtTPPHV1QmEJM1Rog3nq6oTCEmao0A7z1JUJhSvMUKEt5qkrEwpXmKFCe8xTryUUrjBDhfaYp15LKJihQtPz1Kef7v3a1VN7hIIZKjTt4EFXT12q+VAwQ4W2macu13womKEC5qmLmg4FM1QgMU9d1HQomKECC8xTe5oOBTNUYIF5auOh4GqowFLmqY2HgquhAlc7aJ7aZiiYoQIr2bMnYmpq+Q+OrWkyFMxQgdXMzPT+eexYxLlz7d1PzYWCGSqwlomJiLvuivjss4gjR9q7r5oLBTNUYJCZK88WDh+OuHSprfuruVAwQwUGmZzsvb5w9mzEW2+1dX81FQpmqMB6bG/46qlNhYIZKrBeBxudpzYTCmaowEbsaXSe2kwomKECGzXT4Dy1iVAwQwU2O0/dv7+teWoToWCGCmzW9HRb89QmQsEMFdisycbmqdWHghkqcD22NzZPrT4UzFCB63WwoXlq1aFghgoMw56G5qlVh4IZKjAsM43MU6sNBTNUYJgmGpmnVhsKZqjAsE03ME+tNhTMUIFhm2xgnlplKJihAqOwvYF5apWhYIYKjMrByuep1YWCGSowSnsqn6dWFwpmqMCozVQ8T60qFMxQgXGYqHieWlUomKEC4zJd6Ty1qlAwQwXGZbLSeWo1oWCGCozT9krnqdWEghkqMG6HDtU3T60iFMxQgS7s3l3fPLWKUDBDBboyU9k8tfhQMEMFujRR2Ty1+FAwQwW6Nl3RPLX4UDBDBbo2WdE8tehQMEMFcrC9onlq0aFghgrk4lAl89RiQ8EMFcjJ7krmqcWGghkqkJuZCuapRYaCGSqQo4kK5qlFhoIZKpCr6cLnqUWGghkqkKvJwuepxYWCGSqQs+2Fz1OLCwUzVCB3hwqepxYVCmaoQAl2FzxPLSoUzFCBUswUOk8tJhTMUIGSTBQ6Ty0mFMxQgdJMFzhPLSYUzFCB0kwWOE8tIhTMUIESbS9wnlpEKJihAqU6VNg8NftQMEMFSra7sHlq9qFghgqUbqageWrWoWCGCtRgoqB5atahYIYK1PZs4XDm89SsQ8EMFajFgQNlzFOzDQUzVKAm2wuZp2YbCmaoQG0OFTBPzTIUzFCBGu0uYJ6aZSiYoQK1msl8nppdKJihAjWbyHyeml0omKECtZvJeJ6aXSiYoQK1O5DxPDWrUDBDBVqwPeN5alahYIYKtOJQpvPUbELBDBVoye5M56nZhIIZKtCamQznqVmEghkq0KKJDOepWYSCGSrQqpnM5qlZhIIZKtCqA5nNUzsPBTNUoGXbM5undh4KZqhA6w5lNE/tNBTMUAHi//PUhx7KY57aaSiYoQL0TE/nMU/tLBTMUAHym6d2FgpmqAD5zVM7CwUzVID85qmdhIIZKkCe89ROQsEMFSDPeerYQ8EMFSDfeerYQ8EMFSDfeepYQ8EMFSDveerWUX7xkycj/vnPxX9P/diZMxFf/OLi5+++e5RHAFCmRx7pva6QXnD+7nd7rzMstWtXxN69w/9zt8zPz88P/8v2/sK/557Bt/vTnwQDwFLph+dvfCPiv/+NVe3YEXH69PCDYWT10dJnCMO4HUArzp9fOxCSixd7t6vuKqkA5EMoANAnFADoEwoA9AkFAPqEAgCjD4WvfnW4twNoxa5dvSumriWdp5BuV8zJayud0fzvf/feROLzzyOeey7i29924hrASh5+uHfto+98J+L556/9fHFnNK/m8ccjXn014rHHIl55ZZx/MkAZLlyIuPnm3glq774bce+9Fb+mkMubUwPk6ujRXiDcfvv6LhdUdCjk8ubUADm6fDnihRd6v051+5YtDayPcnhzaoAcnTjRuyBees1g4c12qg+FHN6cGiBHs1fem/ngwd7CqIlQWPrm1F283RxAjk6dinj77Ygbblj8O7KZk9cW3pw6zVa7eHNqgNzMzS22KWl91FQodP3m1AC5zVBfe235667NXebCPBWg+xlqNqFgngoQnc9Qs7ognnkq0LoTHc9QswoF81SgdbMdz1CzCgXzVKBlpzKYoWYVCol5KtCquQxmqNmFgnkq0KILmcxQswuFxDwVaM3RTGaoWYaCeSrQkssZzVCzDIXEPBVoxYmMZqjZhoJ5KtCK2YxmqNmGgnkq0IJTmc1Qsw2FxDwVqN1cZjPUrEPBPBWo2YUMZ6hZh0JingrU6miGM9TsQ8E8FajR5UxnqNmHQmKeCtTmRKYz1CJCwTwVqM1spjPUIkLBPBWoyamMZ6hFhEJingrUYi7jGWoxoZDmqVNTy+9QgJJnqNPTkbWsQ2HpC85vvhlx7lzXRwNwfTPUe++NrGUfCgvz1EuXIo4c6fpoAOqboRYVCol5KlCqEwXMUIsLBfNUoFSzBcxQiwsF81SgRKcKmaEWFwqJeSpQmrlCZqhFhoJ5KlCSCwXNUIsMhcQ8FSjF0YJmqMWGgnkqUMoM9Xe/K2eGWmwoJOapQAkz1E8+KWeGWnQomKcCuZstbIZadCiYpwI5O1XgDLXoUEjMU4FczRU4Qy0+FMxTgRxdKHSGWnwoJOapQG6OFjpDrSIUzFOBnFwueIZaRSgk5qlALk4UPEOtJhTMU4FczBY8Q60mFMxTgRycKnyGWk0oJOapQNfmCp+hVhUK5qlAly5UMEOtKhQS81SgK0crmKFWFwrmqUAXLlcyQ60uFJY+bTt8OOLSpa6PBmjBiUpmqFWGwuRkxJ49EWfPRhw/3vXRAC2YrWSGWmUoLJ2nLvyPAhiVUxXNUKsMhcQ8FRiXuYpmqNWGgnkqMA4XKpuhVhsKiXkqMGpHK5uhVh0K5qnAKF2ucIZadSgk5qnAqJyocIZafSiYpwKjMlvhDLX6UDBPBUbhVKUz1OpDITFPBYZtrtIZahOhYJ4KDNOFimeoTYRCYp4KDMvRimeozYSCeSowDJcrn6E2EwqJeSpwvU5UPkNtKhTMU4HrNVv5DLWpUDBPBa7HqQZmqE2FQmKeCmzWXAMz1OZCwTwV2IwLjcxQmwuFxDwV2KijjcxQmwwF81RgIy43NENtMhQS81RgvU40NENtNhTMU4H1mm1ohtpsKJinAuvxt7+1NUNtNhQS81RgkLnGZqhNh4J5KjBohvr6623NUJsOhcQ8FVjN0QZnqNF6KJinAiu53OgMNVoPhcQ8FbjaiUZnqEs1GwrmqcDVZhudoS7VbCiYpwJLtTxDXarZUFj4aWDbtoiTJyP+8peujwbIYYb6gx+0N0NdqulQ2LMnYmpq+TcE0PYMdWYmmtZ0KCz9Bjh2LOLcua6PBuhC6zPUpZoPBfNUaJsZ6nLNh0JingrtMkNdTiiYp0LTzFCXEwrmqdAsM9RrCYUrzFOhPWao1xIKV5inQlvMUFcmFJYwT4V2mKGuTCgsYZ4KbTBDXZ1QuIp5KtTPDHV1QuEqrp4K9TNDXZ1QuIqrp0LdzFDXJhRWYJ4K9TJDXZtQWIF5KtTJDHUwobAK81SojxnqYEJhFeapUBcz1PURCmswT4V6mKGuj1BYg3kq1MMMdX2EwhrMU6EOZqjrJxQGME+F8pmhrp9QGMA8FcpmhroxQmEdzFOhXGaoG7N1g7dv0u7dEbfeGvHxxxHPPhvx5JPLP79rV8TevV0dHbDgzJmI8+eXz1B/+9ver7///YhPPvFYHWTL/Pz8/MBbNf5Ntm9fxMWLq99mx46I06d9s0GXPFaHQ300QPqpY61ASNLnl/50Aoyfx+pwCAUA+oQCAH1CYYizN6Ab6ZXRDz907w+DUBiS+++PePzxiA8+GNZXBAZJr+e9/HLEHXdcuwpkc4TCkKTp26uvRtx5Z8Tdd0e88UbEpUvD+urAUmla+vOfR9xyS8SPfxzx0UcRN97oPhoGoTAkr7wS8dhjEdu2Rbz3XsQjj0R8+csRzz0Xce7csP4UaLsieuediAcfjPjKVyJ+/eve4iidI/Sb30T88Y9dH2EdnKcw5O3zp59GHDkS8eKLEWfPLl5Yb2qqdynu9D4NwPqlx1565p2ucpqeESy4777e1QYeeCBi61bnKQyLUNjEWZJXW+mM5lQdvfVW7xs5PXNYsH9/7xv5wIFeWACrV0SHD0e89NLi4++mmyIefbT3A1a6ysAwHqssJxTGIL34nK7SeOxYxGef9T72pS9FPPVUxKFDvctoAL2K6N13e4+X48cjPv+8d6+kv8ifeSbiiScidu50T42SUBgj1RJcX0XE6AmFDqiWYPMVEaMlFDqmWqI1KqK8CYVMqJaonYqoDEIhM6olaqMiKotQKKxaSm8P+vTTVkvkTUVULqFQANUSpVARlU8oFES1RK5URPUQCoVSLdE1FVGdhELh0sX20rWW0tbbtZYYBxVR3YRCJVRLjJqKqA1CoUKqJYZFRdQeoVAx1RKbpSJql1BogGqJ9VIRIRQao1riaioilhIKjVItoSJiJUKhcaql9qiIWItQoE+1VC8VEeslFFh3tfTgg713wZqYcKeVQkXERgkFBlZL6UqtJ08ufnz//l44HDjQCwvyoyJis4QCG6qW3nyzFxaJy3jnRUXEMAgFNkS1lB8VEcMkFNgU1VL3VESMglDguqmWxkdFxKgJBYZGtTQ6KiLGRSgwdKql4VERMW5CgZFSLW2cioguCQXGQrU0mIqIHAgFxkq1dC0VETkRCnSm5WpJRUSuhAJZVkvbtkVMTdV3rSUVEbkTCmSj5mpJRUQphAJZqqFaUhFRIqFA1kqsllRElEwoUIT0bOH48YjZ2XyrJRURNRAKFCenaklFRG2EAsXqslpSEVEroUDxxlktqYionVCg2WrpzJmI8+dX/1q7dkXs3asioi1CgSarpRQO+/b1aqDV3HhjxK9+FfH66xEffbT48fvu632NBx6I2Lp19P8tME5CgSarpVtvjfj44/V/nZtuinj00Yjp6d7vhVoJBZqulgZJ1dNPfxrxxBMRO3eO+gihe0KBJqulZ5+NePHFwbd9//2IO+8cx1FBHr7Q9QHAuKXXE558cn239ZoBrREKAPQJBQD6hAIAfUKBJqUT03bsWPs26fPpdtAS6yOatd4zmqElQgGAPvURAH1CAYA+oQBAn1AAoE8oANAnFADoEwoA9AkFAPqEAgB9QgGAPqEAQJ9QAKBPKADQJxQA6BMKAPQJBQD6hAIAfUIBgD6hAECfUAAgFvwPrt0hNVYxzwoAAAAASUVORK5CYII=", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1266,23 +1068,26 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 24, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "7 of 8 points on hull\n" + "7 of 8 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1304,16 +1109,19 @@ } }, "source": [ - "How about 100 random points?" + "Next I'll use a set of latitude/longitude coordinates of US cities, taken from my [Traveling Salesperson Problem notebook](TSP.ipynb):" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -1324,14 +1132,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "15 of 100 points on hull\n" + "17 of 1089 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1339,153 +1147,15 @@ } ], "source": [ - "plot_convex_hull(Points(100))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Will 10,000 points be slow? " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "10 loops, best of 3: 48.3 ms per loop\n" - ] - } - ], - "source": [ - "P10K = Points(10000)\n", - "\n", - "%timeit convex_hull(P10K)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "No problem! Still well under a second! Here's what it looks like:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "27 of 10000 points on hull\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXu4ndddHvg7sh1f5TjX5tAwbajKlF4QzLQg0TYGiekU\nJJpAJKa0DjDY7lDL7hDZ0LHpNKEzSVqSAAEmQAiXQAIPlEIYWmD6lD5poaV0OlOPqkrOkXSkWLYT\n3+PEOufsvY/2O39836v1rnf91paTGOIezn6e75HO3t+3vnX5rd/l/V3WEoDY/mx/tj/bn+3P1vzs\n+Fx3YPuz/dn+bH+2P79/n20mv/3Z/mx/tj9b+LPN5Lc/25/tz/ZnC3+2mfz2Z/uz/dn+bOHPNpPf\n/mx/tj/bny382Wby25/tz/Zn+7OFP9tMfvuz/dn+bH+28GebyW9/tj/bn+3PFv5sM/ntz/Zn+7P9\n2cKfbSa//dn+bH+2P1v4s83ktz/bn+3P9mcLf7aZ/PZn+7P92f5s4c82k9/+bH+2P9ufLfy58nPd\ngefyWVra+96Iz//C9pfzK8Dv/q2t/v7tzx/cZ3ut//B8/rCs9X8RTH5YiF+8uf3+Gz+z5paWdkbE\nn42I4wF86g/8/Vvp82nP5Qv9/Z/BWn82ffhcz9/v82dpKZYud88T8bIbboxP/tlPxo3HXx5PPstH\nP5PXfXq3f2729R+0cPkvhMn3Pl+4Z2kpHoyyuEtLMV+6KmZXzeKqTcQOLMV8x1Uxu3IWV10c/156\naTz+sitj88pZXLX59NL8acQOaBtx6T/zHVfExSsi/uvr8/f/qb+4tBRP1d8hroiLV16MKy5ehuae\nK0HKfYgr4uIVQ9sh/19aqn/rNn3Zd47zddUsrpoN84LYEfMd89gxt8eXIhDXxNo1/H1jCRvtPZ/u\nGIdxsk159xJ/WwosIZYQEfGi2HgR/54uYVruu9z7tB195Is6e+KLbl5awqwdEuLKmF56ZnMJC+Zf\nz25YimHNZldwVPMlzPl9093uOD7dD+I5ztEf2Ofl8eTn6M1/uvP9F+5dWorViNgYr8lz+P9GRExe\nHJ/AF8exl56IP332yXj5M/l9X/ilEe//8+17f3+EywuKyecS7uprIzb+XP7ElVdHxOfrN4gdMY2r\nF/79ZLz8UgMR8YpefxA7YjN2RMQVnTt2XBkRL7FRxMXft2mt267f8/y8V+brKrY7745/KTbiWv6x\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot_convex_hull(P10K)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "How about a non-random set? Here is a set of coordinates of 80 US cities:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "9 of 80 points on hull\n" - ] - }, - { - "data": { - "image/png": "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\ngg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "P = Point\n", - "\n", - "USA = {\n", - " P(-621, 289), P(-614, 297), P(-613, 319), P(-613, 342), P(-612, 263), \n", - " P(-612, 332), P(-603, 247), P(-599, 277), P(-592, 238), P(-591, 323), \n", - " P(-586, 229), P(-581, 289), P(-581, 305), P(-576, 253), P(-568, 260), \n", - " P(-563, 322), P(-560, 234), P(-560, 285), P(-559, 292), P(-558, 246),\n", - " P(-557, 259), P(-555, 225), P(-549, 271), P(-543, 321), P(-535, 313), \n", - " P(-530, 249), P(-524, 278), P(-524, 288), P(-515, 308), P(-505, 206), \n", - " P(-504, 327), P(-492, 207), P(-488, 194), P(-488, 248), P(-487, 264), \n", - " P(-484, 305), P(-484, 328), P(-482, 297), P(-480, 289), P(-477, 210), \n", - " P(-470, 319), P(-468, 291), P(-462, 247), P(-461, 328), P(-452, 271), \n", - " P(-450, 210), P(-450, 226), P(-450, 245), P(-441, 311), P(-440, 301), \n", - " P(-438, 233), P(-438, 293), P(-431, 278), P(-425, 266), P(-423, 273),\n", - " P(-422, 213), P(-422, 236), P(-420, 251), P(-415, 297), P(-413, 196), \n", - " P(-409, 214), P(-409, 290), P(-401, 181), P(-401, 253), P(-400, 230), \n", - " P(-400, 282), P(-394, 251), P(-394, 301), P(-387, 263), P(-385, 272), \n", - " P(-371, 285), P(-370, 285), P(-369, 299), P(-363, 309), P(-357, 292), \n", - " P(-355, 297), P(-352, 306), P(-344, 314), P(-340, 328), P(-608, 270)\n", - " }\n", + "def parse_cities(text: str, skip=('AK', 'HI'), longitude_scale=-3/4) -> set[Point]:\n", + " \"\"\"Extract a set of Points from text, skipping the specified states.\"\"\"\n", + " # Entries are of the form \"[FLG] 35.13 111.67 Flagstaff,AZ\"\n", + " entries = re.findall(r'([\\d.]+)\\s+([\\d.]+).+([A-Z][A-Z])', text)\n", + " return {Point(longitude_scale * float(long), float(lat))\n", + " for (lat, long, state) in entries\n", + " if state not in skip}\n", "\n", + "USA = parse_cities(open('latlong.htm').read())\n", "plot_convex_hull(USA)" ] }, @@ -1495,16 +1165,19 @@ "run_control": {} }, "source": [ - "A decidedly non-random set of points:" + "I wanted to make sure that a regular grid gets just the 4 corner points on the hull:" ] }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 26, "metadata": { "button": false, "collapsed": false, "deletable": true, + "jupyter": { + "outputs_hidden": false + }, "new_sheet": false, "run_control": { "read_only": false @@ -1515,14 +1188,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "4 of 100 points on hull\n" + "4 of 100 points are on the convex hull\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQQAAAEACAYAAABVmQgcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAB/NJREFUeJzt3DFvXvUZxuHnEFsyiMgzQ5YMSJQMJgMiUqvwJcjcic/B\n52DqnH6JoCKRKWSAIjFkydC1qBFYOOF0sLkxJrQI//+vz9Nel2RZCtKdwyu9v9hx9CzruhZAVdUr\nV/0AwHYIAhCCAIQgACEIQAgCEIIAhCAAIQhACAIQggCEIAAhCEAIAhCCAIQgACEIQAgCEIIAxN5V\nP8Cy3Pm46sabv/wvT79e188+3P0Twbbs8j1y5UE4/R+9f/eXv35vzPyyXK+qW1X1Ra3rv8aMTt7u\ntjtzu9vulO3J75FzNhCEX3PzaFnqwWUW9urk2u16+M5BHb92XAffPlpOPn9e+y9GPN2s7W67HZ+5\n32tx82jEs/0Wy1WfYV+Wew9eXr+Pzj7g/91H9fL3wr1P1vX++yN/pw1/hXD8TVU9vszCaa0f/VTr\nuj34T4Lx2912Oz5zv9fi+KiqDkc833+z4SA8ebyu9f7lNvarlveuV9XbVfXl2O8VZ21325253W13\nzvayPHlQVS/5Knq8DXzL8OPfoN48qjo4PP3K4MljP2WAU7t8j1x5EH509heId6vqk8t/ZQD/e3bx\nHvEPk4AQBCAEAQhBAEIQgBAEIAQBCEEAQhCAEAQgBAEIQQBCEIAQBCAEAYjNBGGvTq6d/zzMslyv\nZblzdgl3rFnb3XZnbnfbnbg97T1y3rquV/9Rdf3devisal3frYfP1qrro3bXqsdr1fdnn8fsztzu\nttvxmZu+FlPeIxc+tvIVwq2DOn6tqurs89ujdqvqD1W1X1VvDdydud1td+Z2t92Z27PeIz+zlSB8\ncVwH31ZVnX3+ctRuVf29qr6vqq8G7s7c7rY7c7vb7sztWe+Rn9nMTcX95eRvz2v/j3t18unJuv+n\nYcOn38dNuK47cbvb7sztbrsTt6e9R87ZTBAcWYX/zJFVYKcEAQhBAEIQgBAEIAQBCEEAQhCAEAQg\nBAEIQQBCEIAQBCAEAQhBAEIQgNhMEFxdbrw7c7vb7sRtV5e3egF38nXdVrsdn7npa+Hq8oDdanhd\nt9nuzO1uuzO3XV0esVsNr+s225253W135rary0M0vK7bbnfmdrfdiduuLgPh6jKwU4IAhCAAIQhA\nCAIQggCEIAAhCEAIAhCCAIQgACEIQAgCEIIAhCAAIQhACAIQmwmCM+yNd2dud9uduO0M+1ZPYk8+\nt91qt+MzN30tnGEfsFsNz20325253W135rYz7CN2q+G57Wa7M7e77c7cdoZ9iIbnttvtztzutjtx\n2xl2IJxhB3ZKEIAQBCAEAQhBAEIQgBAEIAQBCEEAQhCAEAQgBAEIQQBCEIAQBCAEAYjNBMHV5ca7\nM7e77U7cdnV5qxdwJ1/XbbXb8ZmbvhauLg/YrYbXdZvtztzutjtz29XlEbvV8Lpus92Z2912Z267\nujxEw+u67XZnbnfbnbjt6jIQri4DOyUIQAgCEIIAhCAAIQhACAIQggCEIAAhCEAIAhCCAIQgACEI\nQAgCEIIAxGaC4Opy492Z2912J267urzVC7iTr+u22u34zE1fC1eXB+xWw+u6zXZnbnfbnbnt6vKI\n3Wp4XbfZ7sztbrszt11dHqLhdd12uzO3u+1O3HZ1GQhXl4GdEgQgBAEIQQBCEIAQBCAEAQhBAEIQ\ngBAEIAQBCEEAQhCAEAQgBAEIQQBCEIDYTBCcYW+8O3O72+7EbWfYt3oSe/K57Va7HZ+56WvhDPuA\n3Wp4brvZ7sztbrszt51hH7FbDc9tN9udud1td+a2M+xDNDy33W535na33YnbzrAD4Qw7sFOCAIQg\nACEIQAgCEIIAhCAAIQhACAIQggCEIAAhCEAIAhCCAIQgACEIQGwmCK4uN96dud1td+K2q8tbvYA7\n+bpuq92Oz9z0tXB1ecBuNbyu22x35na33Znbri6P2K2G13Wb7c7c7rY7c9vV5SEaXtdttztzu9vu\nxG1Xl4FwdRnYKUEAQhCAEAQgBAEIQQBCEIAQBCAEAQhBAEIQgBAEIAQBCEEAQhCAEAQgNhMEV5cb\n787c7rY7cdvV5a1ewJ18XbfVbsdnbvpauLo8YLcaXtdttjtzu9vuzG1Xl0fsVsPrus12Z2532525\n7eryEA2v67bbnbndbXfitqvLQLi6DOyUIAAhCEAIAhCCAIQgACEIQAgCEIIAhCAAIQhACAIQggCE\nIAAhCEAIAhBXfiBlWd77qurGG1Wvvl71yrWqH15Uffes6uk/1vXhW1f6cLABy3Ln46obb1bdPKo6\nOKw6/qbqyeOqp1+v62cfjvy99kaO/T433qj66+G5X7hWVYdVH4yZPz1ndauqvph0Kmv8drfdmdvd\ndqds33iz6v7dc79wWFV3q+5dfvqCDQTh17z6+tnJqN9tr06u3a6H7xzU8WvHdfDto+Xk8+e1/2LE\n083a7rbb8Zn7vRY3j0Y822+xgW8ZPvjnha8Qzvy5qv6y46eBLfro7OOie5+s6/33R/5OG/4K4YcX\nVfXpZRZOa/3op1rX7cF/Eozf7rbb8Zn7vRbHR3X6bcJ0Gw7Cd88uf1l2v2p5b9K57Vnb3XZnbnfb\nnbO9LE8e1Om15ek28C3Djz9luMhPGaDq/E8ZLhr/U4YrDwKwHf5hEhCCAIQgACEIQAgCEIIAhCAA\nIQhACAIQggCEIAAhCEAIAhCCAIQgACEIQAgCEIIAhCAAIQhACAIQggCEIAAhCEAIAhCCAIQgAPFv\npNcdqg1h46UAAAAASUVORK5CYII=\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1530,8 +1203,7 @@ } ], "source": [ - "grid = {Point(x+0.5, y+0.5) \n", - " for x in range(10) for y in range(10)}\n", + "grid = {Point(x, y) for x in range(10) for y in range(10)}\n", "\n", "plot_convex_hull(grid)" ] @@ -1542,28 +1214,31 @@ "run_control": {} }, "source": [ - "A variant with some noise thrown in:" + "Here is a variant with some noise thrown in:" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 27, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "13 of 100 points on hull\n" + "14 of 100 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\nhBT8P7A959r75ABgAAAAAElFTkSuQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1571,10 +1246,9 @@ } ], "source": [ - "def noisy(points, d=0.3, seed=42): \n", - " \"Add some uniform noise to each of the points.\"\n", - " random.seed(seed)\n", - " def noise(): return random.uniform(-d, +d)\n", + "def noisy(points, delta=0.4) -> set[Point]: \n", + " \"\"\"Add some uniform noise to each of the points.\"\"\"\n", + " def noise(): return random.uniform(-delta, +delta)\n", " return {Point(x + noise(), y + noise())\n", " for (x, y) in points}\n", "\n", @@ -1585,28 +1259,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Circles and donuts:" + "Some stranger shapes:" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 28, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "28 of 790 points on hull\n" + "20 of 720 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1614,92 +1291,32 @@ } ], "source": [ - "square = {Point(random.uniform(-1, 1), random.uniform(-1, 1)) for _ in range(1000)}\n", - "circle = {p for p in square if p.x ** 2 + p.y ** 2 < 1}\n", - "plot_convex_hull(circle)" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "28 of 628 points on hull\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "donut = {p for p in square if 0.2 < (p.x ** 2 + p.y ** 2) < 1}\n", - "plot_convex_hull(donut)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "19 of 720 points on hull\n" - ] - }, - { - "data": { - "image/png": "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\nBv8fLdTLMnE7hQAAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def rad(degrees): return degrees * math.pi / 180.0\n", - "\n", - "sine = {Point(rad(d), 5 * math.sin(rad(d))) for d in range(720)}\n", + "sine = {Point(math.radians(d), 5 * math.sin(math.radians(d))) for d in range(720)}\n", "plot_convex_hull(noisy(sine))" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 29, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "38 of 360 points on hull\n" + "19 of 360 points are on the convex hull\n" ] }, { "data": { - "image/png": "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\nYSAIguX/A4KDcggsT5ndAAAAAElFTkSuQmCC\n", + "image/png": "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", "text/plain": [ - "" + "
" ] }, "metadata": {}, @@ -1707,9 +1324,72 @@ } ], "source": [ - "donut2 = noisy({Point(5 * math.sin(rad(d)), 5 * math.cos(rad(d))) for d in range(360)})\n", + "donut = {Point(math.sin(math.radians(d)), math.cos(math.radians(d))) for d in range(360)}\n", "\n", - "plot_convex_hull(donut2)" + "plot_convex_hull(noisy(donut))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Complexity of run time and number of points on hull\n", + "\n", + "Now I want to examine what happens to the run time as the number of points increases, and also what happens to the number of points on the hull. The function `hull_stats` returns the mean number of points on the convex hull, and the mean run time, for `k` repetitions of a call to `convex_hull(Points(n))`. The function, `plot_hull_stats` calls `hull_stats` and plots the results." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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CiGEEEII15HRKYQQQgghXEdGpxBCCCGEcB0ZnUIIIYQQwnVkdLrMm2++ia5du6JLly546KGH3N5cznPwwQejefPmOOyww3JeC7eZNWuW1fqNbQS33HJLvPjii9LcJf7++29st9126NOnD3r16oUHH3xQWnvAP//8g/bt2+Oiiy6S3i7ToUMH6zzCMb7HHntI75Cikkku933nH/LHH39sFY/fdttt8eWXX6JFixZubjanYe9b9lN+/PHH8dJLL2V7d0LNn3/+afUT5p/EvHnzrPH922+/oVGjRtnetdBRXl6ONWvWoGHDhli5cqVleH7//fc6l7jM5ZdfjqlTp6KkpAS33HKL25tDrhudv/76Kxo3bpztXREuIk+ni3z77bfo2bOn1deXP6RBgwbhvffec3OTOQ89b02aNMl5Hbxgs802swxOUlxcjE033RSLFy+W9i5Qp04dy+AkND7ZSE7N5NxlypQpmDRpknXeFkI4g4zOavjss88wePBgtGnTBnl5eXj11Vc3Wueee+6xrtDq16+P/v37W4amzdy5cy2D04aP58yZ49BXFz5qq7fInt4//PCD5Y2jR0i4ozWn2Lfaaiu0a9cOF198sWXkC/fGNqfUR48eLYk90pvv22233dC3b188/fTT0j2kyOisBk5j8STPH0synn/+eQwfPtxqgfnjjz9a6+6zzz5YsGCBW99XqJHewdSb3s0TTjgBDzzwgEd7nptaN2vWDL/88gv++OMPPPPMM1Zog3BH79deew1bbLGFdRPejO/PP//cunh9/fXXccMNN2DcuHGSPoxEREpQqrFjx8Yt69evX2To0KGVz8vLyyNt2rSJjB492nr+xRdfRA466KDK188777zI008/LcVd0tvm448/jhx66KHS2QO9V69eHdlll10iTzzxhPR2WetYzjrrrMiLL74ozV3S+9JLL420a9cu0r59+0iLFi0ihYWFkVGjRklvj8b3RRddFHn00UeldwiRpzND1q5da12VDRw4sHJZfn6+9fyrr76ynvfr188KjOaU+ooVK/D2229bV3fCHb2Ft3rz/+XEE0/EgAEDcPzxx0t+F7WmV5MJcmTp0qXWdCarYgh39Oa0OqszTJ8+3UogOu2003DVVVdJbpf0pqfUHt/8r/zoo4+sfAgRPgqyvQNBZeHChVYMW+vWreOW8zmDz0lBQQFuvfVWq/xDRUUFRowYoWxTF/UmPJFxCpInMca+sYzPDjvskOlmc5ZU9P7iiy+saTOWObFjuJ588kn07t07K/scZq1nzJiB008/vTKBaNiwYdLZRb2Ft3rzoorl7gjXpZHP2E4RPmR0uswBBxxg3YQ3fPDBB5LaI3beeWfrYkq4D2dNfv75Z0mdBejNF+7SsWNHy1kgwo+m1zOEmaMsY5IYzM/nLB8jnEV6e4v0ltZhRWNbeovsIaMzQ+rWrWsVw/7www8rl9Hrw+eaznUe6e0t0ltahxWNbektsoem16uBAc3sRmHDUiWc4ioqKkJpaalVAmLIkCFWezpOf40ZM8aKJTzppJO8+O5Ch/SW3mFFY1t6hxmNb5Ey2U6f9zMsvUOJEm9DhgypXOeuu+6KlJaWRurWrWuVhfj666+zus9BRnpL77CisS29w4zGt0gV9V4XQgghhBCuo5hOIYQQQgjhOjI6hRBCCCGE68joFEIIIYQQriOjUwghhBBCuI6MTiGEEEII4ToyOoUQQgghhOvI6BRCCCGEEK4jo1MIIYQQQriOjE4hhBBCCOE6MjqFEIFk+vTpyMvLw88//wy/MGnSJGy//faoX78++vTp49p2HnvsMTRr1sy1zxdCCDeQ0SmEyIgTTzzRMvpuvPHGuOWvvvqqtTwXGTlyJBo1aoTJkyfjww8/dG07Rx55JH777be03rP77rvj/PPPd22fhBCiJmR0CiEyhh69m266CUuWLAmNimvXrs34vdOmTcPOO++M9u3bo0WLFnCLBg0aoFWrVq59vhBCuIGMTiFExgwcOBDFxcUYPXp0letcffXVG001jxkzBh06dIjzmh500EG44YYb0Lp1a2vq+JprrsH69etx8cUXo6ioCO3atcOjjz6adEp7xx13tAzgXr164dNPP417/ddff8WgQYPQuHFj67OPP/54LFy4MM4DeM4551hewE033RT77LNP0uOoqKiw9on7Ua9ePeuY3nnnncrX6d394YcfrHX4mMedDHt7vDVt2tTa5pVXXolIJFK5Do34E044Ac2bN0fDhg2t/Z8yZUqV0+u2xk8++aSlKz/3qKOOwvLlyyv1pS533HGHtW+8MTyB2zn22GPRsmVLy5Dt0qVLUo2FEMIJZHQKITKmTp06lqF41113Yfbs2bVS8qOPPsLcuXPx2Wef4bbbbrOmqvfff3/L8Prmm29w5pln4owzzthoOzRKL7zwQvz000/YYYcdMHjwYCxatMh67e+//8aAAQOw9dZb4/vvv7eMxPnz5+OII46I+4zHH38cdevWxRdffIH7778/6f7RYLv11ltxyy23YNy4cZZxesABB1Qag3/++Sd69uxp7QsfX3TRRVUeK7dXUFCAb7/91vpcHu9DDz1U+TqNRO7v66+/jq+++soySPfdd1+sW7euWi8rQxvefPNN60Yj0w594DaozWmnnWbtG28lJSWWsVtWVoa3334bEydOxH333WcZwUII4QoRIYTIgCFDhkQOPPBA6/H2228fOfnkk63HY8eOpcuucr2RI0dGttpqq7j33n777ZH27dvHfRafl5eXVy7r2rVrZJdddql8vn79+kijRo0izz77rPX8jz/+sLZz4403Vq6zbt26SLt27SI33XST9fzaa6+N7L333nHbnjVrlvW+yZMnW8932223yNZbb13j8bZp0yZy/fXXxy3r27dv5Oyzz658zuPk8VYHt9e9e/dIRUVF5bJLLrnEWkZ+++03a/+++OKLytcXLlwYadCgQeSFF16wnj/66KORpk2bVr7ObTZs2DCybNmyymUXX3xxpH///nHbPe+88+L2ZfDgwZGTTjqpxmMXQggnkKdTCFFrGNdJ7x29ZZlCL2F+fvSUxKnw3r17x3lVGSe5YMGCuPfRg2dD7+F2221XuR+//PILPv74Y2tq3b5169at0jNos+2221a7b8uWLbO8sDvttFPccj7P5JiZ4R6bbMVjoMe0vLzc+jweR//+/Stf53F37dq12m1xWr1JkyaVzzfbbLONtErkrLPOwnPPPWdNzY8YMQJffvll2scihBCpIqNTCFFrdt11V2u6+bLLLtv4JJOfHxevSJJNE2+yySZxz2mUJVvG2MpUWbFihTXdzrJKsTcaeNxnG2acB51MtGKs6IwZM3DBBRdYRvWee+5ZbViAEELUBhmdQghHYPzgG2+8YcUgxsIklXnz5sUZnk7W1vz6668rHzPxiMk83bt3t55vs802mDBhguUF7Ny5c9wtHUOzsLAQbdq0sWI+Y+HzHj16pL3PjFFNPAYm8dCby33nccSuwxhVlmHKZFs2jFmlJzURfj9DhgzBU089ZSV4PfDAAxlvQwghqkNGpxDCETgVzkzoO++8c6Ns7b/++gs333yzNaV9zz33WIkrTsHPGzt2rJXFPnToUCsj++STT7Ze4/PFixfj6KOPxnfffWdt/91338VJJ52U1ACrDiYsMYzg+eeftwzASy+91DKezzvvvLT3eebMmRg+fLj1Oc8++6yViGV/Do3PAw880Er6+fzzz60QgeOOOw5t27a1lmcKDW8assxaZ/Y+vaBXXXUVXnvtNUydOtUyzpmAZBvsQgjhNDI6hRCOwXJBiVO6NGLuvfdeyzjcaqutrIxtJ6dw6WHljZ9NI40Z33YGtu2dpIG59957W4YxSyOx3FBs/GgqnHvuuZahyOx0fg4z4bktGonpwnJIq1atQr9+/SzDmAbn6aefXvk6yxYxzpTZ+4z3pJf4rbfe2mgKPR2oOT2p9JbSu0nDl95PhkRsueWWVrgBX2eMpxBCuEEes4lc+WQhhBAbQc8vE3c4lS2EELmEPJ1CCCGEEMJ1ZHQKIYQQQgjX0fS6EEIIIYRwHXk6hRBCCCGE68joFEIIIYQQriOjUwghhBBCuI6MTiGEEEII4ToyOoUQQgghhOvI6BRCCCGEEK4jo1MIIYQQQriOjE4hhBBCCAG3+X9ADTlILziFDwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def hull_stats(n: int, k=30) -> tuple[float, float]:\n", + " \"\"\"Run convex_hull(Points(n)) k times, return mean number of points on hull and mean run time in milliseconds.\"\"\"\n", + " t0 = time.process_time()\n", + " total_hull = sum(len(convex_hull(Points(n))) for _ in range(k))\n", + " t1 = time.process_time()\n", + " return total_hull / k, (t1 - t0) * 1000 / k\n", + "\n", + "def plot_hull_stats(ns: list[int]) -> None:\n", + " \"\"\"A plot with two axes, for the mean hull sizes and mean run times for each n in ns.\"\"\"\n", + " stats = map(hull_stats, ns)\n", + " hulls, times = list(zip(*stats)) # Transpose the stats matrix\n", + " fig, ax1 = plt.subplots()\n", + " plt.grid(True, linestyle='--', alpha=0.6)\n", + " ax2 = ax1.twinx()\n", + " ax1.set_xlabel('Number of points')\n", + " fig.tight_layout() # Ensures everything fits without overlapping\n", + " \n", + " def plot(ax, color, values, name) -> None:\n", + " ax.set_xscale('log')\n", + " ax.set_ylabel(name, color=color)\n", + " ax.plot(ns, values, color=color, marker='o')\n", + " ax.tick_params(axis='y', labelcolor=color)\n", + "\n", + " plot(ax1, 'blue', hulls, 'Mean number of points on hull')\n", + " plot(ax2, 'red', times, 'Mean run time in milliseconds')\n", + "\n", + "ns = [2 ** i for i in range(19)]\n", + "plot_hull_stats(ns)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The number of points on the hull of ppoints sampled uniformly from a square is (roughly) a straight line on the log graph, which means it is *O*(log *n*). This agrees with the [literature](https://arxiv.org/abs/1111.5340). The [literature](https://en.wikipedia.org/wiki/Convex_hull_algorithms) also says the run time should be *O*(*n* log *n*), and just from eyeballing the plot that looks right (although it would be more convincing if we did a statistical test to verify it). The rightmost point is for sets with *n* = 218 = 262,144 points, and we compute their convex hulls in less than half a second on average (and find an average of about 33 points on the convex hull)." ] }, { @@ -1723,56 +1403,54 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 31, "metadata": { - "collapsed": false + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } }, "outputs": [ { "data": { "text/plain": [ - "'tests pass'" + "True" ] }, - "execution_count": 41, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def tests():\n", - " # Tests of `turn`\n", - " assert turn(octagon[0], octagon[1], octagon[2]) == 'left'\n", - " assert turn(octagon[2], octagon[3], octagon[4]) == 'left'\n", - " assert turn(octagon[1], octagon[0], octagon[7]) == 'right'\n", - " assert turn(octagon[5], octagon[6], octagon[7]) == 'left'\n", - " assert turn(octagon[2], octagon[1], octagon[0]) == 'right'\n", - " assert turn(pacman[1], pacman[2], pacman[3]) == 'left'\n", - " assert turn(pacman[3], pacman[4], pacman[5]) == 'right'\n", - " assert turn(Point(0, 0), Point(0, 1), Point(0, 2)) == 'straight'\n", - " assert turn(Point(2, 1), Point(3, 1), Point(4, 1)) == 'straight'\n", - " assert turn(Point(2, 1), Point(4, 1), Point(3, 1)) == 'straight'\n", - " assert turn(Point(0, 0), Point(1, 1), Point(2, 2)) == 'straight'\n", - " assert turn(Point(0, 0), Point(-1, -1), Point(2, 2)) == 'straight'\n", - " # More tests of `turn`, covering negative denominator\n", + "def tests() -> bool:\n", + " \"\"\"Some unit tests.\"\"\"\n", + " assert is_left_turn(octagon[0], octagon[1], octagon[2])\n", + " assert is_left_turn(octagon[2], octagon[3], octagon[4])\n", + " assert is_left_turn(octagon[1], octagon[0], octagon[7]) == False\n", + " assert is_left_turn(octagon[5], octagon[6], octagon[7])\n", + " assert is_left_turn(octagon[2], octagon[1], octagon[0]) == False\n", + " assert is_left_turn(pacman[1], pacman[2], pacman[3])\n", + " assert is_left_turn(pacman[3], pacman[4], pacman[5]) == False\n", + " assert is_left_turn(Point(0, 0), Point(-1, -1), Point(2, 2)) == False\n", + " \n", " A, B = Point(-2, -2), Point(0, 0)\n", - " assert turn(A, B, Point(1, 3)) == 'left'\n", - " assert turn(A, B, Point(2, 2)) == 'straight'\n", - " assert turn(A, B, Point(3, 1)) == 'right'\n", - " assert turn(A, B, Point(-1, 1)) == 'left'\n", - " assert turn(A, B, Point(-1, -4)) == 'right'\n", - " assert turn(A, B, Point(-1, -1)) == 'straight'\n", - " assert turn(B, A, Point(-3, -4)) == 'left'\n", - " assert turn(B, A, Point(-4, -3)) == 'right'\n", - " assert turn(B, A, Point(-1, -1)) == 'straight'\n", - " assert turn(B, A, Point(-3, -3)) == 'straight'\n", + " assert is_left_turn(A, B, Point(1, 3))\n", + " assert is_left_turn(A, B, Point(2, 2)) == False\n", + " assert is_left_turn(A, B, Point(3, 1)) == False\n", + " assert is_left_turn(A, B, Point(-1, 1))\n", + " assert is_left_turn(A, B, Point(-1, -4)) == False\n", + " assert is_left_turn(A, B, Point(-1, -1)) == False\n", + " assert is_left_turn(B, A, Point(-3, -4))\n", + " assert is_left_turn(B, A, Point(-4, -3)) == False\n", + " assert is_left_turn(B, A, Point(-1, -1)) == False\n", " \n", " # Tests of convex_hull\n", " assert convex_hull(octagon)== octagon\n", - " assert convex_hull(circle) == convex_hull(donut)\n", - " assert convex_hull(circle) == convex_hull(convex_hull(circle))\n", + " assert convex_hull(donut) == convex_hull(convex_hull(donut))\n", " for n in (0, 1, 2, 3):\n", - " assert convex_hull(Points(n)) == Points(n)\n", + " points = Points(n)\n", + " assert convex_hull(points) == points\n", " collinear = {Point(x, 0) for x in range(100)}\n", " assert convex_hull(collinear) == [min(collinear), max(collinear)]\n", " P = Point(5, 5)\n", @@ -1780,221 +1458,11 @@ " grid1 = {Point(x, y) for x in range(10) for y in range(10)}\n", " assert convex_hull(grid1) == [Point(0, 0), Point(9, 0), Point(9, 9), Point(0, 9)]\n", "\n", - " return 'tests pass'\n", + " return True\n", " \n", "tests()" ] }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "## How Many Points on the Hull?" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "The number of points on the hull for `Points(N)` seems to increase slowly as `N` increases. \n", - "How slowly? Let's try to find out. We'll average the number of points on the hull for `Points(N)` over, say, 60 random trials:" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "def average_hull_size(N, trials=60):\n", - " \"\"\"Compute the average hull size of N random points\n", - " (averaged over the given number of random trials).\"\"\"\n", - " return sum(len(convex_hull(Points(N, seed=trials+i)))\n", - " for i in range(trials)) / trials" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We'll do this for several values of *N*, taken as powers of 2:" - ] - }, - { - "cell_type": "code", - "execution_count": 43, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " N Hull Size\n", - " 1: 1.0\n", - " 2: 2.0\n", - " 4: 3.7\n", - " 8: 5.1\n", - " 16: 7.1\n", - " 32: 8.6\n", - " 64: 11.0\n", - " 128: 12.6\n", - " 256: 14.6\n", - " 512: 16.4\n", - "1024: 18.1\n", - "2048: 19.8\n", - "4096: 21.6\n", - "8192: 23.2\n" - ] - } - ], - "source": [ - "hull_sizes = [average_hull_size(2**e) \n", - " for e in range(14)]\n", - "\n", - "print(' N Hull Size')\n", - "for e in range(14): \n", - " print('{:4}: {:4.1f}'.format(2**e, hull_sizes[e]))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then we'll plot the results, with *N* on a log2 scale:" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEQCAYAAABSlhj/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8ldW1//HPCigIznVAoEbFeUDE+YfaqFWsVmm1rUOs\nps5WI9VKK15pGPxVsCD1InodAcWxThUcERscGUQQBPQ6BGhBwAmZxBqy7h/7iRzSJJyc5JznDN/3\n65UXZ3zOSkjOOvvZe69l7o6IiBS2orgDEBGR+CkZiIiIkoGIiCgZiIgISgYiIoKSgYiIkOZkYGad\nzewVM5tjZrPNrDy6vcLM/mVm70RfJ6UzDhERaZylc5+BmXUAOrj7TDPbHJgO9ALOBFa6+y1pe3ER\nEUla63Qe3N2XAEuiy6vMbB7QKbrb0vnaIiKSvIzNGZjZLkA3YEp005VmNtPM7jGzrTIVh4iI/KeM\nJIPoFNHjQG93XwXcDuzm7t0IIwedLhIRiVFa5wwAzKw1MB543t1vref+YmCcu3et5z4VThIRSYG7\nN+lUfCZGBvcBcxMTQTSxXOt04L2GnuzuOftVUVERewyFGn8ux6744//K9fhTkdYJZDPrAZQCs81s\nBuDA9cA5ZtYNqAHmA5emMw4REWlculcTvQG0queuF9L5uiIi0jTagZxGJSUlcYfQLLkcfy7HDoo/\nbrkefyrSPoHcHGbm2RyfiEg2MjM8CyeQRUQkyykZiIiIkoGIiCgZiIgISgYiIoKSgYiIoGQgIiKk\neQeyiIisV1W1gH79RrNoUQ2dOhUxaFAZu+5aHHdYgDadiYhkRFXVAk44YQQffzwAaA+spkuXCiZM\nKG/xhKBNZyIiWapfv9EJiQCgPR9/PIB+/UbHGNV6SgYiImn22Wfwyis1rE8EtdqzeHFNHCH9ByUD\nEZE0+e47uPVW2Hdf2GqrImB1nUespmPH7Hgbzo4oRETyzMsvQ7duMH48TJoEzz1XRpcuFaxPCGHO\nYNCgsviCTKAJZBGRFlRVBb//PcycCbfcAr16gVntfWE10eLFNXTsmL7VRKlMICsZiIi0gDVrYPBg\nGDkSrrkmJIS2beOJJZVkoH0GIiLN4A6PPQZ9+kCPHmFE8MMfxh1V0ykZiIik6N134aqr4OuvYexY\nOOaYuCNKnSaQRUSa6Isv4Ior4MQT4eyzYfr03E4EoGQgIpK06mq4/XbYZ58wKTxvHlx2GbRqFXdk\nzafTRCIiSZg0KZwS2nbbsGy0a9e4I2pZSgYiIo1YuDBMDk+eDMOGwRlnrF8qmk+UDEREIolVRXfc\nsYiddirj/vuLKS+HUaOgXbu4I0wfJQMREeqvKtq+fQXPP1/O0UdnR5npdNIEsogI9VcVXb16AHfe\nOTrGqDJHyUBEBHj33eyuKppuSgYiUtBWrYKLL4b587O7qmi6FcZ3KSJSj8mT4aCDYN06ePPN7K4q\nmm4qVCciBae6Gm68Ee64I2wiO+OMcHumqoqmm6qWiohsxEcfwbnnwpZbwujR0LFj3BG1PPVAFhFp\ngDvccw8ceSSccw688EJ+JoJUaZ+BiOS9zz6rnSSGykrYb7+4I8o+GhmISF57/vnQfnKvvWDKFCWC\nhmhkICJ5ac0a+MMfYNw4ePBBKCmJO6LsppGBiOSdd96Bgw+GL78MDWiUCDYurcnAzDqb2StmNsfM\nZpvZVdHt25jZS2b2gZm9aGZbpTMOESkM69aFPsQ9e0K/fvDQQ7D11nFHlRvSurTUzDoAHdx9pplt\nDkwHegG/Ab5w95vN7I/ANu5+XT3P19JSEUnK/Plw3nlQVARjxkBx7m0PaDFZt7TU3Ze4+8zo8ipg\nHtCZkBDGRA8bA/wsnXGISP5yD/2HDz0UfvpTmDixsBNBqjI2gWxmuwDdgMnAju6+FELCMLMdMhWH\niOSuxH4DnToVce21ZQweXMysWfDSS6G0hKQmI8kgOkX0ONDb3VeZWd1zPw2eC+rfv//3l0tKSijR\nTJBIQaqv38Ajj1RQWlrO9OnFbLZZ3BHGp7KyksrKymYdI+3lKMysNTAeeN7db41umweUuPvSaF7h\nH+6+Tz3P1ZyBiABw7rkDePDBa9mwzPRqSkuHMnZsRVxhZaWsmzOI3AfMrU0EkWeAsujy+cDfMxCH\niOSwRYsKu99AuqX1NJGZ9QBKgdlmNoNwOuh6YAjwmJldACwAfpXOOEQkt61cCYsW1fYb2HBkUCj9\nBtJNVUtFJKuNHw+//S0cccQCpk0bwfz56+cMunSpYMKE8pwsM51OKmEtInlj2TLo3RumTYM774Tj\nj8+ffgPppmQgIjnPHe6/P9QVOv986N8f2rWLO6rckkoyUKE6Eckan3wCl14KX3wRqo127x53RIVD\nMy8iErvqahg2DA47DE44AaZOVSLINI0MRCRWM2fCRReFNpSTJ8Puu8cdUWHSyEBEYvHNN9C3L5x4\nYlgtNHGiEkGcNDIQkYyrrIRLLgkdyGbNgg4d4o5IlAxEJGOWL4c+fcLk8MiR0KtX3BFJLZ0mEpGM\nePLJ0H+4dWuYM0eJINtoZCAiabV4MVx5JcydC488AkcfHXdEUh8lAxFpMYn9Bjp2LGLffcv461+L\nueyy0IKybdu4I5SGKBmISIuor99AmzYVPPVUOT/5iUpGZDvNGYhIi+jXb3RCIgBoz7ffDuDBB0fH\nFpMkT8lARFrE3LnqN5DLlAxEpFm++AIuuADef7+230Ai9RvIFfpfEpGUuMOYMWG56BZbwOTJZXTp\nUsH6hBD6DQwaVBZfkJI0lbAWkSb74AO47DJYsSL0GjjkkHC7+g1kB/UzEJG0WrsWbrop7B7u1w+u\nuCJsIpPson4GIpI2EyfC5ZfD/vuHSqOdO8cdkbQkJQMRadSyZfD738Orr8Jtt8Gpp8YdkaSDJpBF\npF41NXDPPWEk0KFDqCekRJC/NDIQkf8wZ05oP1ldDRMmwIEHxh2RpJtGBiLyvTVrQsOZkhIoLYU3\n3lAiKBRKBiICwAsvhFNCVVWh4czll0OrVnFHJZmi00QiBe7TT+Hqq2HaNLjjDujZM+6IJA5KBiIF\nJLHE9E47FbH33mWMGFHMxRfDffdBu3ZxRyhxUTIQKRD1lZhu27aCp58up2dP7RIudJozECkQ9ZWY\nXrt2AA88MDrGqCRbKBmIFIh581RiWhqmZCCS59asCTuI585ViWlpmH4LRPLYq6+GfQKffgqvv64S\n09IwVS0VyUOrVoXNY08+CbffDr16hdtVYrowqIS1iDBxIlx0EfzoRzB8OGyzTdwRSaaphLVIAVux\nAvr0geeeCw1nTj457ogkl2jOQCQPvPgiHHBAqDT63ntKBNJ0aU0GZnavmS01s1kJt1WY2b/M7J3o\n66R0xiCSz776KjSjv/TSUG767rthq63ijkpyUbpHBqOA+iqd3OLu3aOvF9Icg0heGjcujAY22wxm\nz4YTTog7IsllaZ0zcPfXzay+pQpNmtgQkfW++AJ694a33oKxY0O5aZHmimvO4Eozm2lm95iZBrUi\nSXryyTAa2G67UGZaiUBaStqXlkYjg3Hu3jW6vj3wubu7md0I7OTuFzbwXC0tFQE++wyuvDI0or/v\nPujRI+6IJJvlxNJSd/8s4erdwLjGHt+/f//vL5eUlFCij0KSxxJLTHfqVMTAgWVMnVrM734Hv/41\njB4d5ghEElVWVlJZWdmsY2RiZLALYWRwQHS9g7sviS5fDRzq7uc08FyNDKRg1Fdiul27Cjp2LGfs\n2GIOPzzuCCVXpDIySPfS0oeAN4E9zWyhmf0GuNnMZpnZTOBHwNXpjEEkV9RXYnrNmgEccshoJQJJ\nu42eJjIzA0qB3dx9oJntDHRw96kbe24Dn/hHNT1Mkfy3aFH9JaaXLlWJaUm/ZEYGtwNHAmdH11cC\nI9MWkUiBat9eJaYlPsn8lh3u7lcAawHc/Stg07RGJVJgxo6FN94oY/vtVWJa4pHMaqLvzKwV4PD9\n0lCNW0VawNq18LvfwSuvwKRJxWyxRTn9+g1NKDFdrhLTkhEbXU1kZqXAmUB3YAzwC+AGd/9b2oPT\naiLJY1VV8ItfwG67wb33wpZbxh2R5Iu09TMws72B4wllJCa6+7zUQmwaJQPJV+PGwYUXwn/9F1x1\nFZgKtEgLSksyMLN7gRHuPjPhtv7u3j+lKJtAyUDyTXU13HADPPQQPPooHHlk3BFJPkrXPoOewBgz\nOy/httOaFJmI8OmncPzxMGMGTJ+uRCDZJZlksAw4BvilmY00s9ao6qhIk1RWwiGHwHHHhU5k228f\nd0QiG0omGZi7f+3upwKfAZWAKo2KJKGmBgYPhrPOglGjoKICWrWKOyqR/5TM0tJnai+4e38zm45K\nSIhs1Jdfwvnnh/4Db78NnTvHHZFIw9JeqK45NIEsuertt+GXv4Sf/xyGDIFNNok7IikkLTqBbGav\nR/+uNLMVCV8rzWxFc4MVyUfucMcdoSH90KFwyy1KBJIbNDIQaSGrVsFll4V+xI8/DnvsEXdEUqjS\nsrTUzLqYWZvocomZXWVmW6capEg+mjcPDjsMNt009CZWIpBck8xqoieAdWa2O3AX8EPgobRGJZJD\nHn4YjjkGrr02tKRs1y7uiESaLpnVRDXuXm1mPyfsRB5hZjPSHZhINkpsS9mhQxGtW5cxeXIxEyZA\nt25xRyeSumSrlp4NnA+cGt2mKTEpOPW1pWzfvoI33yyna1dVFpXclsxpot8Qmtv8f3evMrNdgQfS\nG5ZI9qmvLeXq1QO4+ebRMUYl0jI2OjJw97nAVQnXq4Ah6QxKJBvNnVt/W8rFi9XeQ3Kf+umJbMTC\nhaGcxAcfqC2l5C/9Fos0YM0aGDAADjoI9toLpk4to0sXtaWU/KRNZyJ1uMNjj8Ef/gBHHAE33wzF\n0fxw7Wqi9W0py9SWUrJOiza3MbNxRH2P6+Puae9poGQgmfbOO9C7d9hNfOutYf+ASK5JJRk0NoE8\ntJnxiOSMZctCC8px42DQILjgApWalsLSYDJw90mZDEQkDv/+N9x2G9x0E/z61/D++7C1iq1IAWow\nGZjZbBo/TdQ1LRGJZMhzz8HVV0OXLvDaa7D33nFHJBKfxk4T/TRjUYhk0PvvwzXXwMcfw/Dhody0\nSKFr7DTRgkwGIpJuy5fDwIHwwAPQty88/XSoMioiyZWwTmxus9bM1qm5jeSSdevg7rvDaaBVq2DO\nnDAyUCIQWS+ZchRb1F42MwN6AUekMyiRVCVWFe3UqYif/rSMIUOK2XzzMEfQvXvcEYpkp5Q2nZnZ\nDHc/KA3x1H0d7TOQpNVXVbR16wqGDSunvLwYa9Kqa5Hc1dL7DGoPenrC1SLgEGBtE2MTSbv6qopW\nVw9g6tShmFXEGZpI1kumn8GpCZergfmEU0UiWWXRIlUVFUlVMnMGv8lEICLNtWJFbVXRxISgqqIi\nyWhs09kIGt90dlVD94lkknsoJbF8eRnFxRUsWLB+ziBUFS2PO0SRrNfYyODthMsDAJ10layzbh1c\nfjnMnAlTphSzcmU5/foNTagqWq6qoiJJSGo1Uaqrh8zsXsJO5qW15SvMbBvgUaCYMP/wK3f/uoHn\nazWRNOjbb6G0NGwme+op2GKLjT9HpBCkspoo2ZOpqb4jjwJ61rntOuBld98LeAXom+KxpYCtXAmn\nnBIuP/usEoFIc6V1Zs3dXwe+qnNzL2BMdHkM8LN0xiD55/PP4bjjQoG5Rx+FNm3ijkgk9zU2gbyS\n9SOCdgklKAxwd98yxdfcwd2XEg6yxMx2SPE4UoAWLoSePeH00+HGG9FGMpEW0lihukwNvDUpIEmZ\nNw9OOil0IrvmmrijEckvyWw6a2lLzWxHd19qZh2AZY09uH///t9fLikpoaSkJL3RSVaaNg1OPTX0\nIz7vvLijEckulZWVVFZWNusYKdUmatILmO0CjHP3A6LrQ4Av3X2Imf0R2Mbdr2vguVpNJEycCGef\nDffeGxKCiDQuldVEaU0GZvYQUAL8AFhK2KvwNPA34IfAAsLS0uUNPF/JoMA98UTYR/D442pOL5Ks\nrEsGzaVkUNjuvhsqKkLp6W7d4o5GJHekpWqpSKa5w5AhcNdd8OqrsPvucUckkv+UDCSr1NRAnz7w\n0kvw+uvQsWPcEYkUBiUDyRrV1XDRRfDhh2FEsM02cUckUjiUDCQrfPMNnHUWfPddGBW0r9uWQETS\nSoXeJXZffx02k22+Ofz970oEInFQMpBYLV0KJSXQtSs88ABsskncEYkUJp0mkoyrqloQ9Suu4b33\nirjwwjKGD1fDepE4aZ+BZFRV1QJOOGFEQuP60I1swgQ1oRFpKensZyDSIvr2HZ2QCADa8/HHA+jX\nb3SMUYmIThNJRlRXw6hR8NRTNWzYsB6gPYsX18QRlohENDKQtHIP9YX23x8efhiOPbYIWF3nUavp\n2FG/iiJx0pyBpM0//gHXXQf//jcMHgwnngjz52vOQCTdVKhOssKMGdC3b9hJfOONcOaZUJTwwb92\nNdHixTV07FjEoEFlSgQiLUjJQGL18cfQr18YEdxwA1x8MWy6adxRiRQerSaSWCxZAldeCYcfDvvs\nE0YEV1yhRCCSS5QMJGUrVoSRwH77hZ3D8+aF65tvHndkItJUSgbSZN9+C8OHwx57wMKFMH16uL79\n9nFHJiKp0j4DSdq6dTB2bOg+dsAB8PLL4V8RyX1KBvIfalf7LFpUQ6dORQwcWMacOcVcfz1suWVI\nCEcdFXeUItKStJpINlBf7aC2bSvo3LmcYcOKOfVUVFBOJMtpNZE0W6gmumHtoLVrB3DooaM57TQl\nApF8pWQgG1i0qP7aQUuWqHaQSD5TMpDvffUVfPSRageJFCL9hQsA06ZB9+5w/PFl7LZbBesTQqgd\nNGhQWWyxiUj6aQK5wLnDiBGhhtAdd8AZZ6h2kEiuU20iaZLly+HCC2H+fHjsMejSJe6IRKQlaDWR\nJG36dDj4YNhpJ3jzTSUCkUKnZFBg3GHkSDjpJLjpJrjtNmjTJu6oRCRu2oFcQL7+OpSV/vDDMBrY\nY4+4IxKRbKGRQYGYMQMOOQR+8AN46y0lAhHZkJJBnnOH//mf0HJy4MCwYqht27ijEpFso9NEeWzl\nSrjkEpg7F15/HfbaK+6IRCRbaWSQp959N6wW2mILmDxZiUBEGqdkkGfc4e674cc/Dn0H7roLNtss\n7qhEJNvpNFEeWbUKLrssjApeew323jvuiEQkV2hkkCdmzw6rhdq0gSlTlAhEpGliGxmY2Xzga6AG\n+M7dD4srllyT2ImsY8ciunYtY+jQYoYNg/POizs6EclFsdUmMrNPgIPd/atGHqPaRHXU14lsk00q\nGD++nBNPVDE5Ecm92kQW8+vnpPo6kX333QDuv390jFGJSK6L883YgQlmNs3MLo4xjpzyySf1dyJb\nvFidyEQkdXGuJurh7p+a2faEpDDP3V+v+6D+/ft/f7mkpISSkpLMRZhFli2DwYNh+vTaTmSJCUGd\nyEQKWWVlJZWVlc06Rlb0MzCzCmClu99S5/aCnzP48ksYOhTuvBNKS6G0dAGlpRvOGXTpUsGECeVq\nQCMiQGpzBrGMDMysHVDk7qvMrD1wIjAgjliy1YoVcOut4ev000OhuZ13BihmwoRy+vUbmtCJTIlA\nRJonlpGBme0KPEWYN2gNPOjug+t5XMGNDNasCf0G/vIX6Nkz7CLeffe4oxKRXJIzIwN3rwK6xfHa\n2erbb0MZiT//GXr0gMpK2HffuKMSkUKhchQx++47GDMGBg2Crl3h2WfhoIPijkpECo2SQUzWrYOH\nH4b+/WGXXeCRR+DII+OOSkQKlZJBhtXUwFNPwZ/+BFtvHU4NHXts3FGJSKFTMsgQd3juOejXD4qK\nYNiwMEFsTZriERFJDyWDNEgsJNepUxEnnVTGyJHFrFwZ5gZ+9jMlARHJLlmx6awhubi0tL5Ccq1b\nVzB0aDlXXllMq1ZxRygi+S7XCtXlpfoKyVVXD2DatNFKBCKStZQMWtC6dTB1qgrJiUjuUTJoIXPm\nwFFHwfLltYXkEqmQnIhkN71DNdO334aSESUlUFYGb71VRpcuFaxPCKGQ3KBBZXGFKCKyUZpAboY3\n3oCLL4Y99wz1hDp1CrfXriZaX0iuTIXkRCRjUplAVjJIwYoV0LcvPP00/Pd/h6qiWioqItlCq4ky\nYPx42H9/+Pe/4b334IwzlAhEJPdp01mSli6F3r1h+vRQWE4lJEQkn2hksBHuMHp0qCi6664wa5YS\ngYjkH40MGvHJJ3DJJfDVV/Dii9BNHRhEJE9pZFCP6urQd/iww+AnP4EpU5QIRCS/aWRQx8yZcOGF\nsO22MHUq7LZb3BGJiKSfRgaRb74Jy0V79oTycnjpJSUCESkcBTkyqFti+uSTy6ioKObgg8ME8Y47\nxh2hiEhmFdyms/pKTLdqVcEdd5Rz8cXaJSwiuU+bzpJQX4npdesGMGnS6BijEhGJV8GcJnKH116D\niRNVYlpEpK68TwZVVXD//eFrs81gp52KWLJkNRsmBJWYFpHClpfvgKtWhV3Dxx4b9gp8/jk89hjM\nng1PPKES0yIideXNBHJNDUyaFJLAM8/AMcfA+efDKadAmzYbPlYlpkUknxVkCeuPPlp/GmjrrUOD\nmXPOgR12yEyMIiLZJpVkkJNzBitWhNM+Y8bABx9AaWnoLaCSESIiqcn6OYNzzx1AVdUC1q2DCRPC\nG//OO8Nzz0GfPrBoEQwfrkQgItIcWX+aCFax9dYVtGlTTqdOxZSVwdlnw3bbxR2diEh2yss5A3Bg\nNSefPJRnn62IOyQRkayXxzuQ2/PNN9oUJiKSLjmSDLQpTEQknXLgHVabwkRE0i3rk0Fp6VAmTCjX\npjARkTSKbQLZzE4C/kpISPe6+5B6HtPiJaxFRPJdzkwgm1kRcBvQE9gPONvM9o4jlnSqrKyMO4Rm\nyeX4czl2UPxxy/X4UxHXaaLDgA/dfYG7fwc8AvSKKZa0yfVfqFyOP5djB8Uft1yPPxVxJYNOwD8T\nrv8ruk1ERGKQ9RPIIiKSfrFMIJvZEUB/dz8pun4d4HUnkcMOZBERaaqcKEdhZq2AD4DjgU+BqcDZ\n7j4v48GIiEg8JazdfZ2ZXQm8xPqlpUoEIiIxyepCdSIikhlZOYFsZieZ2ftm9r9m9se442kKM+ts\nZq+Y2Rwzm21mV8UdUyrMrMjM3jGzZ+KOpanMbCsz+5uZzYv+Hw6PO6amMLOrzew9M5tlZg+a2aZx\nx9QYM7vXzJaa2ayE27Yxs5fM7AMze9HMtoozxsY0EP/N0e/PTDN7wsy2jDPGhtQXe8J9vzezGjPb\nNpljZV0yyIMNadXANe6+H3AkcEWOxV+rNzA37iBSdCvwnLvvAxwI5MwpSDPrCJQD3d29K+FU7lnx\nRrVRowh/r4muA152972AV4C+GY8qefXF/xKwn7t3Az4ke+OvL3bMrDNwArAg2QNlXTIgxzekufsS\nd58ZXV5FeCPKqT0U0S/SycA9ccfSVNEnuKPdfRSAu1e7+4qYw2qqVkB7M2sNtAMWxxxPo9z9deCr\nOjf3AsZEl8cAP8toUE1QX/zu/rK719bNnwx0znhgSWjgZw8wHOjTlGNlYzLImw1pZrYL0A2YEm8k\nTVb7i5SLE0q7Ap+b2ajoNNddZrZZ3EEly90XA8OAhcAiYLm7vxxvVCnZwd2XQviABOwQczzNcQHw\nfNxBJMvMTgP+6e6zm/K8bEwGecHMNgceB3pHI4ScYGanAEuj0Y1FX7mkNdAdGOnu3YE1hFMWOcHM\ntiZ8qi4GOgKbm9k58UbVInLxgwVm9l/Ad+7+UNyxJCP64HM9kNgWMqm/4WxMBouAnROud45uyxnR\n8P5x4AF3/3vc8TRRD+A0M/sEeBg41szujzmmpvgX4VPR29H1xwnJIVf8GPjE3b9093XAk8D/izmm\nVCw1sx0BzKwDsCzmeJrMzMoIp0tzKRl3AXYB3jWzKsL753Qz2+jILBuTwTRgdzMrjlZRnAXk2oqW\n+4C57n5r3IE0lbtf7+47u/tuhJ/9K+5+XtxxJSs6NfFPM9szuul4cmsifCFwhJm1NTMjxJ8LE+B1\nR5HPAGXR5fOBbP9QtEH8UYn9PsBp7v5tbFEl5/vY3f09d+/g7ru5+66ED0cHuftGk3HWJYPo01Dt\nhrQ5wCO5tCHNzHoApcBxZjYjOm99UtxxFZirgAfNbCZhNdGfY44nae4+lTCamQG8S/gjvyvWoDbC\nzB4C3gT2NLOFZvYbYDBwgpnVVhoYHGeMjWkg/hHA5sCE6G/49liDbEADsSdykjxNpE1nIiKSfSMD\nERHJPCUDERFRMhARESUDERFByUBERFAyEBERlAxERAQlA2lBZrayhY83NuprMcvM7onapdbe18vM\nbmjJ16vn9X9kZuPS+RrR62xnZpPNbHq0abE5x7rUzM7dyGMONLOfJBFTzhRnk+ZTMpCW1NI7GMe6\n+95RXf92wEUJ9/0ByMSu0JS/p6g3RzJ+DMxy94Pd/Y1UXw/A3e9097EbeVg3Qs2dxo7zObDYzI5s\nTjySO5QMJC3M7C9Rp7d3zexX0W1mZreb2dyo+9WzZnZ6Q8dw9xcSrk4lqilvZnsAa939y+j6KDO7\n1czeMLOPao9Z95O9mY0ws/Oiy1Vm9ueoZMhUMzvIzF4wsw/N7JKE193KzMZHI5TbE451gpm9aWZv\nm9mjZtYu4biDzext4Bd1fibFZjYx+plMsNAV70BgCNArKnvQps5zqsxsSDQ6mmxmu9U51szaY0W3\nV5jZNdHlf0SxTIni72FmmwADgV9Fr/dLMzsmoXTKdDNrH73834FGRxmSP5QMpMWZ2RlAV3c/gNBt\n6S9RBcvTgZ3dfV/gPEInuGSO1xr4NVCbHHoA79R5WAd37wGcSnhzrdXYJ/v57n4Q8DqhY9TpUUwD\nEx5zKHAFsA+hgOLpZvYD4AbgeHc/BJgOXJPwnM/d/RB3f6zO640ARrn7gcBDwAh3fxf4E/Cou3dv\noCjaV9HoaCShi1visbrVHquB77GVux8OXA30jxpGJb7e34Brgd9GJb+PBr6Jnvt2dF0KgJKBpEMP\nQvlromoApO8dAAAClElEQVSJlYQOdkcBf4tuXwr8I8nj3Q5MSjiFshPwWZ3HPB0ddx7JN1KpHTXM\nBqa4+5ro9MhaW9/zdmrUdc+j7+ko4AhgX+ANM5tBSGyJZdcfbeD1joyOAfAA4eeUjEeifx+OXrsp\nx3oy+nc6oUdCfd4AhptZObBNQoevZYSftRSA1nEHIAXBSPHcu5n9CdjO3RNP3XwD1G1QnviJurZK\nYzUbfuBp28Bzauo8v4b1fxt1466tAvmSu5c2EPbqBm5Pdf7BG7icjNrvax0N/L27+xAzGw+cQkhw\nJ7r7/xJ+Xt/U9xzJPxoZSEuqfRN+DTjTzIrMbHvCqYaphE+gv4jmDnYESho9mNlFhGbfZ9e5ax6w\nRxJxLAD2NbNNLHQQO76J3wfA4dH5+SLgTMIppclADzPrEsXZLprH2Jg3Wf+9nEv4OSXjzOjfs4C3\nostvpHCs2u9rJQnJ1Mx2c/c57n4zoZ/I3tFdewLvJRmj5DiNDKQlOYC7P2VmRxDq8dcAfdx9mZk9\nARxH6FPxT8Kpi68bOd4dwHxgspk58KS73wi8Cgyt+7r1xPEvM3uM8IZWxYbzDI19wk68bypwG7A7\nodHPU/B9F6yHowlfJ8whfLiR414FjDKzawmnuerWnm/INmb2LrCW9QkgmWPV+3MhnJ67zszeAW4C\njjazYwmjhzms7/d7LPBskjFKjlM/A8koM2vv7qvNbFtgCtAjmS5M9RxnODDO3V9p8SCziIXWhQfX\nrpzK8GtXAr3cvbGELXlCIwPJtPHRKZtNgIGpJILIn4HDWy6srBXLpzUz2w64RYmgcGhkILEzsycJ\nTbxh/WTzH919QmxBiRQYJQMREdFqIhERUTIQERGUDEREBCUDERFByUBERID/AyHg0JBCzu2vAAAA\nAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def plot_hull_sizes(hull_sizes):\n", - " plt.plot(hull_sizes, 'bo-')\n", - " plt.ylabel('Hull size')\n", - " plt.xlabel('log_2(number of points)')\n", - "\n", - "plot_hull_sizes(hull_sizes)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That sure looks like a straight line! \n", - "\n", - "That means we can define `estimated_hull_size` by computing a slope and intercept of the line. (I won't bother doing linear regression; I'll just draw a straight line from the first to the last point in `hull_sizes`.)" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEQCAYAAABSlhj/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4lOX1//H3CSgKoqVuiHwFwV0R3HcbN1CsYrGLiNWo\ndakKltaNtvmFxVZR0CKKFReCggq4i0vFJbiyCLKjVQRUEFyBsEqS8/vjnsBAs0xCZp6Zyed1Xbky\ny/M8cxLCnLm3c5u7IyIi9VtO1AGIiEj0lAxERETJQERElAxERAQlAxERQclARERIcjIws5Zm9qaZ\nzTGzWWbWI/Z4gZl9ZWbTYl9nJjMOERGpmiVznYGZNQeau/t0M9sBmAp0AX4HFLv7XUl7cRERSVjD\nZF7c3ZcCS2O3V5nZPGDP2NOWzNcWEZHEpWzMwMxaAx2ASbGHrjOz6Wb2kJntlKo4RETkf6UkGcS6\niJ4Crnf3VcBQoI27dyC0HNRdJCISoaSOGQCYWUNgHPCKuw+u4PlWwIvufmgFz6lwkohILbh7jbri\nU9EyeASYG58IYgPL5boCsys72d0z9qugoCDyGOpr/Jkcu+KP/ivT46+NpA4gm9kJQHdglpl9BDjw\nV+BCM+sAlAELgauSGYeIiFQt2bOJ3gMaVPDUq8l8XRERqRmtQE6i3NzcqEPYKpkcfybHDoo/apke\nf20kfQB5a5iZp3N8IiLpyMzwNBxAFhGRNKdkICIiSgYiIqJkICIiKBmIiAhKBiIigpKBiIiQ5BXI\nIiKyyYIFi8jPL2Tx4jL23DOH/v3z2HvvVlGHBWjRmYhISixYsIgzzhjC/Pl9gSbAatq2LWD8+B51\nnhC06ExEJE3l5xfGJQKAJsyf35f8/MIIo9pEyUBEJMm+XfwTM8evZFMiKNeEJUvKogjpfygZiIgk\nyYYNMOZP7/N9q8O4uvRDYPUWR6ymRYv0eBtOjyhERLLMW8+vZOzu13Ha/b9mhzsKOGvyCNq2LWBT\nQghjBv3750UXZBwNIIuI1KEFC+Dx7i9x6eSr+emUTrQafSf282ax58JsoiVLymjRInmziWozgKxk\nICJSB9asgdtvh/vug8LcQjpd2YptO50SSSy1SQZaZyAishXcYcwYuPFGOOEEmD4d/u//8qIOq8aU\nDEREamnGDOjZE1asgJEj4eSTo46o9tRNJCJSQ99/D33+toHmIwdyVLd9OO3fv6FBRbu9R0TdRCIi\nSVRSAsOGwfN/m8zDDa5gt2NbsO3fukEaJYLa0tRSEZEETJgAJ3ZYxa639WJcg3Npec/NbDv+ZWjd\nOurQ6oRaBiIiVfjiizA4PHEiTNz5tzQ/dVds0GzYZZeoQ6tTGjMQEYmJryq6++457LFHHo8+2ooe\nPeCmm6BxaTE0bRp1mNXSmIGISC1VVFW0SZMCXnmlByedVL4wLP0TQW1pzEBEhM2riu7N5zSllNWr\n+/LAA4VRh5YSSgYiIsCMGWU0oBF/YSCTOZqjmUw6VRVNNnUTiUi9tmoV9OoFO81fyiSO4kd25hgm\n8TltSaeqoslWP35KEZEKTJwIh3coo+vEm3hr+2d4ctfmnMFzGxNBOlUVTTa1DESk3ikpgVtvhfvv\nh6FDczjru7bwqzlcs3otX+cPiqsqWvdbUqYrTS0VkXrls8/gootgxx2hsBBatIg6orqnPZBFRCrh\nDg89BMcdBxdeCK++mp2JoLaUDEQk6337LVzVaSH7/uUcPhg2i549IUfvfpvRmIGIZLVXxpUyqfs9\n3L3hHzS65c80/OUBUYeUljRmICJZac0aGHzZDM569gpaHdSEZqMfgP32izqslNC2lyIiwLRpcFm3\ntbzydXt2+sfNNL7uMrAavTdmtLQbQDazlmb2ppnNMbNZZtYz9ngzM3vNzD4xs/+Y2U7JjENE6ofS\n0rAPcadOcFPB9uzxw1wa97i8XiWC2kpqy8DMmgPN3X26me0ATAW6AJcC37v7HWZ2M9DM3W+p4Hy1\nDEQkIQsXwsUXh4HhESOgVf1YHlChtGsZuPtSd58eu70KmAe0JCSEEbHDRgDnJTMOEcleXua8fvN4\njj6yjF/+Et54o34ngtpK2ZiBmbUGioBDgC/dvVnccz+4+88rOEctAxHZKH6/gT33zKH3RR1Ze/lt\n/Oy7+ax98XXaddwj6hDTQtruZxDrInoKuN7dV5nZlu/wlb7j9+nTZ+Pt3NxccnNzkxGiiKS5+P0G\njO35I/9i91Gn8nb7P3Lw3KfYfqdtow4xMkVFRRQVFW3VNZLeMjCzhsA44BV3Hxx7bB6Q6+7LYuMK\nb7n7gRWcq5aBiABw0UV9GTXqBnZlNc9xHmXkcAWDOaL7OEaOLIg6vLSSdmMGMY8Ac8sTQcwLQF7s\n9iXA8ymIQ0Qy2OLFZUATvmdn7qEnJ/M2H3NEvdlvINmS2k1kZicA3YFZZvYRoTvor8AAYIyZXQYs\nAn6bzDhEJLMVF8PixTnAaspowmguiD1Tf/YbSDYtOhOR9OXOuJeMa66BY49dxJQpQ1i4cNMexW3b\nFjB+fP0pM50orUAWkayxvPBZlvfqxy+bvcfgBxtz2mmbZhNt2m8gT4mgAkoGIpLxfPESvujSgw3T\nZ/P6b4Zx8cO/oHHjqKPKLOk6gCwiUr2yMr699QFW7N2e1746iOJ3ZnD1E0oEqaIS1iISuZISePzm\nWRxwzwhmX/cml97ZjoZ6d0opdROJSKSmT4c//CFsQznsAWeffVVUbmupm0hEMsbatdC7N3TsCNdc\nE2oKKRFER8lARFKruJg5BWNo3x7mz4eZM+Gy+rXdQFpSN5GIpMyqJ15k/RXX8pp3pPHIYXT5lT6P\nJkPaFqoTkXpu6VK+Ov96NkyayvOdC7n0sVPZSVtapRWlZRFJqu+eeZsVrQ7l5Y/3Zsmrs/jTC0oE\n6UjdRCJSZ+L3G2jRIoeDDsqj8K6m/KnrF1w+pAPbbRd1hPWDViCLSGTi9xsorx3UqFEBzz7bg7PO\nUsmIVNLUUhGJTH5+IYvm/52QCACasH59X0aNKowsJkmckoGIbL3VqznztVd4gW5bPNFE+w1kCCUD\nEdkqK8e8yrfND8F+WMvv+fcWz2q/gUyhfyURqRX/5lvmH38Ry7v9kbGnPUC7aS/ws7ZDgNWxI8J+\nA/3750UXpCRMA8giUmOffALPnPcoLX+YycFP9eXwk8I4gfYbSA+aTSQiSbVuHdx2G9x3H+Tnw7XX\nouqiaUgrkEUkad54A/74RzjkkFBptGXLqCOSuqRkICJV+uHN6TzWdz53LTyfe++Fc86JOiJJBg0g\ni0iFylatYcaZN1N6eid2abqeOXOUCLKZWgYi8j8WPvwGDa+7imVNjqLh6zPpfuruUYckSaZkICIb\nrVkDE84ewCFvD2XGVUM5c8jZNGgQdVSSCuomEhEAXn01DA6/tMMFbPPxbM4eqkRQn2hqqUg99/XX\n0KsXTJkCQ4dCp05RRyRbS1NLRaRKm5WY3h3atf0tg4YdzBVXwCOPQOPGUUcoUVHLQKSeiC8xfQif\n8xCX8UrDRhw3bhSdOmmVcDZRCWsRqVR+fiFfze9Nf27jDU7jIa6kX8krPPZYYdShSRpQN5FIPbH9\n5M+ZwfHMoh3tmcFS9gBQiWkBlAxEst6aNaGO0B4LvuJm+vI8F8Q9qxLTEuivQCSLvf02tG8fZgx1\nmfgIs9t+iEpMS0U0gCyShVatgt694ZlnwnTRLl3C4yoxXT+ohLVIfVdWxse9HqBgzMFs3+lk7r4b\nmjWLOihJNSUDkXps1eS5LD33Sn780Vkz+CF+cfWBUYckEdHUUpH6aP16PruoD+uP+wWT2l7Ifkvf\nUSKQGkvqbCIzexj4JbDM3Q+NPVYAXAF8Ezvsr+7+ajLjEMlWP/4IXx/cmcXLd2DJYx/R/ULtOCO1\nk+yWwXCgokond7n74bEvJQKRWnjxRWjXDkZ2fIxjlz7HyUoEshWS2jJw93fNrKKpCjXqyxKRTb7/\nHq6/Hj74AEaOhNzcFlGHJFkgqjGD68xsupk9ZGY7RRSDSGZZupRnx2ygXTvYZReYORNyc6MOSrJF\nFMlgKNDG3TsAS4G7IohBJHOUlVE8aBgrW7fj6b+8z9ix8K9/QZMmUQcm2STl5Sjc/du4uw8CL1Z1\nfJ8+fTbezs3NJVcfhSSLxZeY3nPPHG7LO4lGPfry1WfrKOr+Bg/efyjbbx91lJJuioqKKCoq2qpr\nJH2dgZm1Bl5093ax+83dfWnsdi/gKHe/sJJztc5A6o34EtM5bMct9KMXd3D/LjfT8fl8jjle245J\nYtJunYGZPQ68D+xnZl+Y2aXAHWY208ymA78AeiUzBpFMkZ9fyPz5fYEmlJFDI5wjmMbc002JQJKu\n2m4iMzOgO6Gfv5+Z7QU0d/fJ1Z1bySf+4TUPUyT7LV5cBpQPBBgF9AOg7TKVmJbkS6RlMBQ4DugW\nu18M3Je0iETqqSZNcthUUbScSkxLaiTyV3aMu18LrANw9x+BbZMalUh9sWwZ5OXxzL++4L338th1\n1wJUYlqikMhsog1m1gBwADPbFVC7VWRruENhIX7zzbzW4lL6vLsLEyY0pmnTHuTnD4wrMd1DJaYl\nJaqdTWRm3YHfAYcDI4BfA39397FJD06ziSQbffYZXHUV679ZwaUlD7LhkMN4+GHYcceoA5NskbQS\n1mZ2AHAaoYzEG+4+r3Yh1oySgWSdFSvgoIOY0+nPnP7i9dzy94b07AmmAi1Sh5KSDGKVR4e4+/S4\nx/q4e59aRVkDSgaSbUpKoN+NxRQ+3ZTRo+G446KOSLJRstYZdAJGmNnFcY+dW6PIRISvv4bTToNJ\nc5sydaoSgaSXRJLBN8DJwG/M7D4za4iqjopUb8aMjTeLiuDII+HUU+Hll2HXXaMLS6QiiSQDc/cV\n7n4O8C1QBKjSqEhlvvsOLr4YzjuPsm+/5/bb4YILYPhwKCiABlpMLGkokWTwQvmN2DjBAGBhkuIR\nyVzuMGoUHHII7LorP7w9my6X7cwLL8CHH0LHjlEHKFK5pBeq2xoaQJaMsWwZXHIJLF0KDz7Ih3YU\nv/kN/OpXMGAAbLNN1AFKfVKnA8hm9m7se7GZrYz7KjazlVsbrEhW2WEH6NwZnzyF+z88is6dYeBA\nuOsuJQLJDGoZiNSRVavg6qth1ix46inYd9+oI5L6KilTS82srZk1it3ONbOeZvaz2gYpko3mzYOj\nj4Zttw17EysRSKZJZAD5aaDUzPYBhgH/Bzye1KhE0tWbb8JZZ8FPP2186Ikn4OST4YYb4JFHoHHj\nCOMTqaVEViBPc/fDzexGYJ27DzGzj9z9sKQHp24iSRc//AA33EDJq/9h8H6/YJztS/PmOTRsmMfE\nia0YOxY6dIg6SJGgNt1EiVYt7QZcApwTe0xDYlI/uMPo0dCrFys6duLk7c5n5oTbCJvQrKZJkwLe\nf78Hhx6qyqKS2RLpJrqUsLnNP9x9gZntDTyW3LBE0sR778Gtt8Izz3Bt6d7MXFCeCACasHp1X+64\nozDCAEXqRrUtA3efC/SMu7+AsPBMJPudeCJMnw4NGzL32lfZlAjKNWHJEm3vIZlP++mJVOOLJQ25\n4AL45BNtSynZS3/FIgDr1oVqcnHWrIG+feGww2D//WHy5DzattW2lJKdtOhMZMIEuPLKUFZ05Egc\nY8wYuOkmOPZYuOMOaBUbH16wYBH5+YVx21LmaVtKSTt1urmNmb1IbN/jirh70vc0UDKQpFq+PLzj\nv/wyDBkCv/oV06bB9deH1cSDB4f1AyKZpq6nlg7cynhE0tfbb0O3bnDuuTBnDt+s34m/XQEvvgj9\n+8Nll6nUtNQvlSYDd5+QykBEUmqvvWD0aH46+kTuvRduuw1+/3v4+GP4mYqtSD1UaTIws1lU3U10\naFIiEkmF1q15eW5rerWDtm3hnXfggAOiDkokOlV1E/0yZVGIJJM72Kbu048/hj//GebPh7vvhs6d\nI4xNJE1U1U20KJWBiNS59evh9tvhv/+FUaNYvhz69YPHHoPeveG550KVURFJrIR1/OY268ysVJvb\nSNp7/304/HCYOpXSfw7gwQdDN9CqVTBnTmgZKBGIbJJIOYqm5bfNzIAuwLHJDEqkthbOnM2nv76M\nwxbN4/Gjz2K3bncw4LyW7LBDmEF6+OFRRyiSnmq16EwlrCUdLViwiCePuoRdvt+bm7iL5WxLw4YF\nDBrUgx49WsUPG4hktaSUsDazrnF3c4AjgXU1jE0k6fLzCxn1/Thgh42PlZT0ZfLkgZgVRBeYSAZI\nZD+Dc+JulwALCV1FImll8eIy4hNBoKqiIolIZMzg0lQEIlIj//0vLF26Wb2IlSvLq4rGl5lWVVGR\nRFS16GwIVS8661nZcyJJs2ED3Hkn3HVX+H7yybjD3/4Gy5fn0apVAYsW9aV8J7JQVbRH1FGLpL2q\nWgYfxt3uC6jTVaI1eTL84Q/QsiVMnQqtWlFaCn/8Y9h/ZtKkVhQX9yA/f2BcVdEeqioqkoCEZhPV\ndvaQmT1MWMm8rLx8hZk1A0YDrQjjD7919xWVnK/ZRBLccUdYLjxoUCgwZ8b69dC9eyg++uyz0LRp\n9ZcRqQ9qM5so0c7U2r4jDwc6bfHYLcDr7r4/8CbQu5bXlvqkUyeYPRsuvBDMKC6Gs88OT730khKB\nyNZK6siau78L/LjFw12AEbHbI4DzkhmDZIn27WHnnQH47js49dRQYG70aGjUKOLYRLJAVQPIxWxq\nETSOK0FhgLv7jrV8zd3cfRnhIkvNbLdaXkeykTuUlMA221T49BdfhEZC165w661oIZlIHam0ZeDu\nTd19x9hXw7jbTbciEVT4UnV4Lclk8+dDx45wzz0VPj1vHpx0ElxxBfzjH0oEInUpkUVndW2Zme3u\n7svMrDnwTVUH9+nTZ+Pt3NxccnNzkxudpF5JSZgqescdcMstYd/JLUyZAuecEw65+OIIYhRJY0VF\nRRQVFW3VNWpVm6hGL2DWGnjR3dvF7g8AfnD3AWZ2M9DM3W+p5FzNJsp206aF6aI77wwPPABt2vzP\nIW+8ESYQPfxwSAgiUrXazCZKajIws8eBXGBnYBlhrcJzwFjg/4BFhKmlyys5X8kg2117LRxzTNhz\nsoJ+n6efDusInnpKm9OLJCrtksHWUjKo3x58EAoKQunpDh2ijkYkcySlaqlIqrnDgAEwbBi8/Tbs\ns0/UEYlkP1XwkuRzh8cfh7lzqz20rAxuuAFGjYJ331UiEEkVJQNJroULw47zt98eisxVoaQELrsM\nJk4MLYIWLVIToogoGUiylJaGWkJHHhlGfqdODauIK7F2LZx/PnzzDbz2GjRrlsJYRURjBpIE7nDG\nGeH7++/DfvtVefiKFXDuuaEYaWFhpYuPRSSJNJtIkmPuXDjwwGqXCS9bBmeeCSeeCIMHQ47aqiJb\nTVNLJSMsWLCI/PxC5s8vY/bsHC6/PI+779aG9SJ1RclAUm/FCthxx4QLBS1YsIgzzhjC/Pmb70Y2\nfrw2oRGpK8ncz0Bkc+4wZkzoCpo8OeHTevcujEsEAE2YP78v+fmFyYhSRBKkAWSpuS+/hGuugc8/\nD3Uijjmm2lNKSmD4cHj22TI237AeoAlLlpQlJVQRSYxaBpK40lK49144/HA46qhQZO7446s8xT3U\nFzrkEHjiCTjllBxg9RZHraZFC/0pikRJLQNJXFlZ2Hn+7bdD91A13norVKT+6acwU6hjR1i4MI8z\nzij4nzGD/v17JD18EamcBpClzn30EfTuDZ9+GnYj+93vNp8yWj6baMmSMlq0yKF//zwNHovUIc0m\nkkjNnw/5+aFF8Pe/hx3Jtt026qhE6h/NJpK6sXw53Hhj+J6ApUvhuuvCOPKBB4YWwbXXKhGIZBIl\nA9ncM8+E0d7i4mqXA69cGVoCBx8cSkjMmxfu77BDimIVkTqjAWQJFi8OH+/nzQvTfk46qdJD16+H\noUNDIdIzzww16Fq3Tl2oIlL31DKQUCr0sMOgXbswW6iSRFBaCiNGwP77w5tvwuuvh/tKBCKZTwPI\nEnz9NeyxB7Bpts/ixWXsuWcO/frlMWdOK/7611B5YsCAUFhORNKTZhPJVquodtB22xXQsmUPBg1q\nxTnnJFyGSEQiotlEUr0vv6zy6VBNdPPaQevW9eWoowo591wlApFspWRQXxQXQ48eoXxEcXGlhy1e\nXHHtoKVLVTtIJJspGdQH48aF+Z9r18LMmdC0aYWH/fgjfPaZageJ1Ef6H57Nvv021ILo1SvsJ/nQ\nQ5VuLjxlSqg/d9ppebRpU8CmhFBeOygvJSGLSDS0ziCblZXBAQeERLD99hUe4g5DhoQaQvffD+ef\n34oFC3qQnz8wrnaQNp4RyXaaTVSPLV8Ol18OCxeGfWrato06IhGpC5pNJAmbOhWOOCIsLXj/fSUC\nkfpOySAbTJkSPuKXllZ7qDvcd18oI3HbbWGvmkaNUhCjiKQ1jRlkslWrQmW4J56AQYOqLSy3YkUo\nK/3pp6E1sO++KYpTRNKeWgaZ6tVXQ3XRH36A2bOhe/cqV4R99BEceSTsvDN88IESgYhsTi2DTPTa\na2FD+mHDwl6SVXCHBx4IDYh77oFu3VIUo4hkFM0mykRlZWEBWZMtVwpvrrgYrrwS5s4Ns4X23z9F\n8YlIpDSbqL7Iyak2EcyYEWYLNW0KEycqEYhI1ZQM0llJCcyaVaNT3OHBB+H006GgIPQkVbLeTERk\nI40ZpKtp08LUnzZtYOzYhE5ZtQquvjq0Ct55Jyw+FhFJhFoG6WbNmrAZ/VlnhSqjY8YkdNqsWWG2\nUKNGMGmSEoGI1ExkLQMzWwisAMqADe5+dFSxpI333oOLL4Zjjgnv7rvtVuFh8TuRtWiRw6GH5jFw\nYCsGDQqni4jUVGSziczsc+AId/+ximPq12yijz4K20927lzpIRXtRLbNNgWMG9eDjh1VTE5EMm82\nkUX8+unnsMOqTARQ8U5kGzb05dFHC5MdnYhksSjfjB0Yb2ZTzOyKCOPIKJ9/XvFOZEuWaCcyEam9\nKGcTneDuX5vZroSkMM/d393yoD59+my8nZubS25ubuoiTIbS0lAd7osvQj2hBH3zDdx+O0ydWr4T\nWXxC0E5kIvVZUVERRUVFW3WNtFiBbGYFQLG737XF49k1ZjBzZpguuv32YQHAfvtVe8oPP8DAgaGk\nRPfu0L37Irp333zMoG3bAsaP1wY0IhLUZswgkpaBmTUGctx9lZk1AToCfaOIJSXWrYP+/cNqsH/+\nEy67rNoKoytXwuDB4atr1zC2vNdeAK0YP147kYlI3YqkZWBmewPPEsYNGgKj3P32Co7LjpZBfj58\n8kmoFNe8eZWHrlkT9hu4807o1CmsIt5nnxTFKSJZoTYtg7ToJqpM1iSDkhJoWHUjbP36TQ2HE06A\nvn3hoINSFJ+IZJWM6Saqd6pIBBs2wIgRoRfp0EPhpZfCDFMRkVRSMqhLX30VthM7+OBqDy0tDRuU\n9ekDrVvDk0/CccclPUIRkQppPmJdKCsLHf2HHRb2k6zm0KefDq2A++8PXUOvv65EICLRUstga82d\nG6aLAkyYUGlHvzu8/HIYS87JCUsMOnWqcqdKEZGUUTLYGnfdBbfdBv36wVVXbZwuGl9Ibs89czjz\nzDzuu68VxcVhbOC885QERCS9aDbR1njrrbBwbM89Nz5UUSG5hg0LGDiwB9dd14oGDSKLVkTqiUwr\nVJf5Tjlls0QAFReSKynpy5QphUoEIpK2lAwSlUALpbQUJk9WITkRyTxKBtVZsgTOPx8efrjKw+bM\ngRNPhOXLywvJxVMhORFJb3qHqkxZWSgm1759mCF00UUVHrZ+fSgZkZsLeXnwwQd5tG1bwKaEEArJ\n9e+fl5KwRURqQwPIFfnkkzBd9KefwkKAdu0qPOy998Jh++0XlhmUDx+UzybaVEguT4XkRCRlVJuo\nrnTtGgaHr7mGikZ9V66E3r3huedC7bmuXTVVVETSh2oT1ZWnn6703X3cuJAjOnWC2bOhWbMUxyYi\nkgRKBhWpIBEsWwbXXw9Tp4bCcqecEkFcIiJJUr8HkF96Cb7+uspD3KGwMNQS2nvvsFmZEoGIZJv6\n2TJYtgx69gwf88eOhT32qPCwzz+HK6+EH3+E//wHOnRIcZwiIilSv1oG7jB8eJgdVP4xv4LNA0pK\nwr7DRx8NZ50FkyYpEYhIdqs/LYPSUujcGb7/Hl57rdJ39+nT4fLL4ec/h8mToU2bFMcpIhKB+jW1\n9J13wsYBFew8tnZtKD76yCMwYABccommi4pIZtLU0uqcdBLwvyWmO3fOo6CgFUccEXqOdt894jhF\nRFIsO1sGP/0E225b4VMVlZhu0KCA++/vwRVXaJWwiGQ+lbCGMO3ngAPCirAKVFRiurS0LxMmFKYq\nQhGRtJM93UTffgu9eoWCQf/+NxxyyGZPu4chgzfeUIlpEZEtZX7LwB0eeyxMF91999Ai6NRp49ML\nFkDfvrDPPqGMxB57qMS0iMiWMv8dcPVqePLJUDRo0CBo0oRVq8Kq4VNOCWsFvvsOxoyBWbPg6adV\nYlpEZEtZM4BcVgYTJoQk8MILcPLJYXro2WdDo0abH6sS0yKSzeplCevPPoNHHw1fP/tZ2GDmwgth\nt91SE6OISLrJ7tlEa9bAnXfC+vWsXAkPPRSWDRx/PBQXh70Fpk+HP/1JiUBEpKbSPhlcdFFfvh75\nOH7ooSx9aSpXXLSWvfaCl1+GG2+ExYvh7rtVO0hEZGukfTfRI1zE6fY8vXcazLw2l5KXB926wS67\nRB2diEh6yspyFCv5OQf5fzn5+AeY+lLU0YiIZKe0TwZ/YjAAa9dqUZiISLKk/ZhBoEVhIiLJlAHv\nsFoUJiKSbGmfDLp3H8j48T20KExEJIkim01kZmcC/yIkpIfdfUAFx9Tt5jYiIvVAxiw6M7Mc4F6g\nE3Aw0M3MDogilmQqKiqKOoStksnxZ3LsoPijlunx10ZU3URHA5+6+yJ33wA8CXSJKJakyfQ/qEyO\nP5NjB8UftUyPvzaiSgZ7Al/G3f8q9piIiEQg7QeQRUQk+SIZQDazY4E+7n5m7P4tgG85iGxmGj0W\nEamFjCjbZgyGAAAIeElEQVRhbWYNgE+A04CvgclAN3efl/JgREQkmnIU7l5qZtcBr7FpaqkSgYhI\nRNK6aqmIiKRGWg4gm9mZZvaxmf3XzG6OOp6aMLOWZvammc0xs1lm1jPqmGrDzHLMbJqZvRB1LDVl\nZjuZ2Vgzmxf7dzgm6phqwsx6mdlsM5tpZqPMbNuoY6qKmT1sZsvMbGbcY83M7DUz+8TM/mNmO0UZ\nY1Uqif+O2N/PdDN72sx2jDLGylQUe9xzfzGzMjP7eSLXSrtkkAUL0kqAP7v7wcBxwLUZFn+564G5\nUQdRS4OBl939QKA9kDFdkGbWAugBHO7uhxK6ci+INqpqDSf8f413C/C6u+8PvAn0TnlUiaso/teA\ng929A/Ap6Rt/RbFjZi2BM4BFiV4o7ZIBGb4gzd2Xuvv02O1VhDeijFpDEftD6gw8FHUsNRX7BHeS\nuw8HcPcSd18ZcVg11QBoYmYNgcbAkojjqZK7vwv8uMXDXYARsdsjgPNSGlQNVBS/u7/u7uV18ycC\nLVMeWAIq+d0D3A3cWJNrpWMyyJoFaWbWGugATIo2khor/0PKxAGlvYHvzGx4rJtrmJltH3VQiXL3\nJcAg4AtgMbDc3V+PNqpa2c3dl0H4gARk8s7klwGvRB1EoszsXOBLd59Vk/PSMRlkBTPbAXgKuD7W\nQsgIZnY2sCzWurHYVyZpCBwO3OfuhwNrCF0WGcHMfkb4VN0KaAHsYGYXRhtVncjEDxaY2d+ADe7+\neNSxJCL2weevQEH8w4mcm47JYDGwV9z9lrHHMkasef8U8Ji7Px91PDV0AnCumX0OPAGcYmaPRhxT\nTXxF+FT0Yez+U4TkkClOBz539x/cvRR4Bjg+4phqY5mZ7Q5gZs2BbyKOp8bMLI/QXZpJybgt0BqY\nYWYLCO+fU82s2pZZOiaDKcA+ZtYqNoviAiDTZrQ8Asx198FRB1JT7v5Xd9/L3dsQfvdvuvvFUceV\nqFjXxJdmtl/sodPIrIHwL4BjzWw7MzNC/JkwAL5lK/IFIC92+xIg3T8UbRZ/rMT+jcC57r4+sqgS\nszF2d5/t7s3dvY277034cHSYu1ebjNMuGcQ+DZUvSJsDPJlJC9LM7ASgO3CqmX0U67c+M+q46pme\nwCgzm06YTfTPiONJmLtPJrRmPgJmEP6TD4s0qGqY2ePA+8B+ZvaFmV0K3A6cYWbllQZujzLGqlQS\n/xBgB2B87P/w0EiDrEQlscdzEuwm0qIzERFJv5aBiIiknpKBiIgoGYiIiJKBiIigZCAiIigZiIgI\nSgYiIoKSgdQhMyuu4+uNjO1rMdPMHoptl1r+XBcz+3tdvl4Fr/8LM3sxma8Re51dzGyimU2NLVrc\nmmtdZWYXVXNMezM7K4GYMqY4m2w9JQOpS3W9gnGkux8Qq+vfGPhD3HM3AalYFVrrnym2N0ciTgdm\nuvsR7v5ebV8PwN0fcPeR1RzWgVBzp6rrfAcsMbPjtiYeyRxKBpIUZnZnbKe3GWb229hjZmZDzWxu\nbPerl8ysa2XXcPdX4+5OJlZT3sz2Bda5+w+x+8PNbLCZvWdmn5Vfc8tP9mY2xMwujt1eYGb/jJUM\nmWxmh5nZq2b2qZldGfe6O5nZuFgLZWjctc4ws/fN7EMzG21mjeOue7uZfQj8eovfSSszeyP2Oxlv\nYVe89sAAoEus7EGjLc5ZYGYDYq2jiWbWZotrTS+/VuzxAjP7c+z2W7FYJsXiP8HMtgH6Ab+Nvd5v\nzOzkuNIpU82sSezlnweqbGVI9lAykDpnZucDh7p7O8JuS3fGKlh2BfZy94OAiwk7wSVyvYbA74Hy\n5HACMG2Lw5q7+wnAOYQ313JVfbJf6O6HAe8SdozqGoupX9wxRwHXAgcSCih2NbOdgb8Dp7n7kcBU\n4M9x53zn7ke6+5gtXm8IMNzd2wOPA0PcfQbw/4DR7n54JUXRfoy1ju4j7OIWf60O5deq5Gds4O7H\nAL2APrENo+JfbyxwA3BNrOT3ScDa2Lkfxu5LPaBkIMlwAqH8NbFqiUWEHexOBMbGHl8GvJXg9YYC\nE+K6UPYAvt3imOdi151H4huplLcaZgGT3H1NrHtknW3a83ZybNc9j/1MJwLHAgcB75nZR4TEFl92\nfXQlr3dc7BoAjxF+T4l4Mvb9idhr1+Raz8S+TyXskVCR94C7zawH0Cxuh69vCL9rqQcaRh2A1AtG\nLfvezez/Abu4e3zXzVpgyw3K4z9Rl1dpLGHzDzzbVXJO2Rbnl7Hp/8aWcZdXgXzN3btXEvbqSh6v\n7fiDV3I7EeU/VymV/H939wFmNg44m5DgOrr7fwm/r7UVnSPZRy0DqUvlb8LvAL8zsxwz25XQ1TCZ\n8An017Gxg92B3CovZvYHwmbf3bZ4ah6wbwJxLAIOMrNtLOwgdloNfw6AY2L98znA7whdShOBE8ys\nbSzOxrFxjOq8z6af5SLC7ykRv4t9vwD4IHb7vVpcq/znKiYumZpZG3ef4+53EPYTOSD21H7A7ARj\nlAynloHUJQdw92fN7FhCPf4y4EZ3/8bMngZOJexT8SWh62JFFde7H1gITDQzB55x91uBt4GBW75u\nBXF8ZWZjCG9oC9h8nKGqT9jxz00G7gX2IWz08yxs3AXridiArxPGED6t5ro9geFmdgOhm2vL2vOV\naWZmM4B1bEoAiVyrwt8LoXvuFjObBtwGnGRmpxBaD3PYtN/vKcBLCcYoGU77GUhKmVkTd19tZj8H\nJgEnJLILUwXXuRt40d3frPMg04iFrQuPKJ85leLXLgK6uHtVCVuyhFoGkmrjYl022wD9apMIYv4J\nHFN3YaWtSD6tmdkuwF1KBPWHWgYSOTN7hrCJN2wabL7Z3cdHFpRIPaNkICIimk0kIiJKBiIigpKB\niIigZCAiIigZiIgI8P8BfDFiSUoSj0wAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def estimated_hull_size(N):\n", - " \"Estimated hull size for N random points, (inter/extra)polating from hull_sizes.\"\n", - " slope = (hull_sizes[-1] - hull_sizes[0]) / (len(hull_sizes) - 1)\n", - " return hull_sizes[0] + slope * math.log(N, 2)\n", - "\n", - "# Plot actual average hull sizes in blue, and estimated hull sizes in red\n", - "plot_hull_sizes(hull_sizes)\n", - "plt.plot([estimated_hull_size(2**e) \n", - " for e in range(len(hull_sizes))], \n", - " 'r--');" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's an estimate of the number of points on the hull of a quadrillion random points:" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "86.15634904778565" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "estimated_hull_size(10**15)" - ] - }, { "cell_type": "markdown", "metadata": { @@ -2011,13 +1479,13 @@ "The convex hull problem is an interesting exercise in algorithm design.\n", "The algorithm covered here is called [Andrew's Monotone Chain](https://en.wikibooks.org/wiki/Algorithm_Implementation/Geometry/Convex_hull/Monotone_chain).\n", "It is a variant of the [Graham Scan](https://en.wikipedia.org/wiki/Graham_scan).\n", - "You can read more from [Tamassia](http://cs.brown.edu/courses/cs016/docs/old_lectures/ConvexHull-Notes.pdf) or [Wikipedia](https://en.wikipedia.org/wiki/Convex_hull)." + "You can read more from [Wikipedia](https://en.wikipedia.org/wiki/Convex_hull_algorithms)." ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2031,9 +1499,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.1" + "version": "3.13.3" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 4 }