Skip to content

Instantly share code, notes, and snippets.

@LeslieK
Last active August 29, 2015 14:00
Show Gist options
  • Save LeslieK/11131808 to your computer and use it in GitHub Desktop.
Save LeslieK/11131808 to your computer and use it in GitHub Desktop.
Plotting cost of inserting keys into a hash table using double hashing linear probe open addressing
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from openAddressing import DoubleProbingHashST"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Experiment: Insert words of \"Tale Of Two Cities\" into a Double Hash Open Addressing Hash Table"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Initial table size = 11"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d = DoubleProbingHashST(M=11)\n",
"with open(\"TaleOfTwoCities.txt\", mode='r', encoding='utf-8') as f:\n",
" for line in f:\n",
" words = (word for word in line.split() if len(word) > 7)\n",
" for w in words:\n",
" if d.get(w):\n",
" d.put(w, d.get(w) + 1)\n",
" else:\n",
" d.put(w, 1)\n",
"d.a.plotData(xlim=50, ylim=12)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x69259b0>"
]
}
],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(\"final table size:\", d.M)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"final table size: 16381\n"
]
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(\"number of keys: \", d.N)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"number of keys: 4371\n"
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d.a.plotData()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\njOv2+eef1+Z1cXGx+K78/f3V/v37VXl5uXJ0dFQnT57U3nv++efVzTffXGsdzB9t2rRRL7zwQrWf\nuXjxotLpdKqgoEAppVTXrl3V22+/rfLz8y3mqynOmkRHR1vdLv773/+qyMhI7XVgYKB6++23tddb\ntmxRwcHB2vIDAgKUUvXfFlqz1tNJ2Yqlp6fTtm1bsrOzKSsro1u3btp7Xbt25dy5c3Uuy/xsiK5d\nu1JWVkZ2drbFPKdPn6asrIyOHTtq0yoqKujatavVch944AE+/PBDi2l2dlcbkidPnuRPf/oTP/zw\nA4WFhZSXlzNw4EAARo0axezZs3niiSc4ffo0sbGxvPbaa3h4eADQvn17rRwXFxf0er3VOKzNm5GR\nQUBAgMW8lV83lPkyXV1dKS4upqKigtOnT5ORkYGPj4/2vsFg0A5S17ROTOpy9kpOTo7Fujbx8/Oj\nTZs22uuMjIwq205GRob22sfHBxcXF+11t27dyMzMrHaZ7dq1s1imq6srer2erKwsysvLLeKuy3qu\nXIfp06drrQWDwcBzzz3H559/TlZWFnZ2duh0OrKzs/Hw8GD9+vW8/PLL/N///R/9+vVj8eLFDB06\ntMY46+rChQvMnTuX7777jkuXLlFRUaG1Yk0q/0+Zr1OT2raF64l0HzWxgwcPkpGRwc0334yvry+O\njo4Wp2CeOXNG+6dzc3OjsLBQe+/8+fNVyjtz5ozFc0dHR3x9fS3m6dKlC05OTuTk5HDx4kUuXrxI\nfn4+R44cqTZGnU5X63GFxx9/nD59+vDLL7+Qn5/PwoULLY5RzJkzh8TERI4dO8bJkyd59dVXayyv\nvjp16kR6err2Will8bqyxjjI2aVLF4KCgrR1ePHiRQoKCti0aRNQ+zq51jgqf7ZTp05Vtp1OnTpp\nry9evGix/Zw+fdri/brE4ufnh4ODA2fPntWmmT+vD9PyPv74Y7788ku2b99Ofn4+qampWpcZwMCB\nA9m4cSNZWVnce++9TJw4sUHLq86zzz6Lvb09P/30E/n5+Xz00UdVvqPK/1Pm68yktm3heiJJoZGZ\nNnTTBhMXF8eUKVMIDQ3F3t6eiRMn8txzz6HX6zl9+jRLly7loYceAiAyMpJdu3Zx9uxZ8vPzWbRo\nUZWy16xZw/HjxyksLOTFF19kwoQJVf7ZO3bsyO23386f/vQn7ddRSkqK1XPza0sIAHq9Hg8PD1xd\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x68bfef0>"
]
}
],
"prompt_number": 22
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Initial table size = 61"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d = DoubleProbingHashST(M=61)\n",
"with open(\"TaleOfTwoCities.txt\", mode='r', encoding='utf-8') as f:\n",
" for line in f:\n",
" words = (word for word in line.split() if len(word) > 7)\n",
" for w in words:\n",
" if d.get(w):\n",
" d.put(w, d.get(w) + 1)\n",
" else:\n",
" d.put(w, 1)\n",
"d.a.plotData(xlim=50, ylim=5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x6831320>"
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print(\"final table size:\", d.M)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"final table size: 16381\n"
]
}
],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d = DoubleProbingHashST(M=61)\n",
"with open(\"TaleOfTwoCities.txt\", mode='r', encoding='utf-8') as f:\n",
" for line in f:\n",
" words = (word for word in line.split() if len(word) > 7)\n",
" for w in words:\n",
" if d.get(w):\n",
" d.put(w, d.get(w) + 1)\n",
" else:\n",
" d.put(w, 1)\n",
"d.a.plotData()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x6bb94a8>"
]
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"d.a.means[13524]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"3.3468391866913123"
]
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment