{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "95b02dd4",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Introduction to Computational Complexity and Big-O\n",
    "#### CS 66: Introduction to Computer Science II"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d64f06d0",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## References for this lecture\n",
    "\n",
    "Problem Solving with Algorithms and Data Structures using Python\n",
    "\n",
    "Sections 3.1-3.4: [https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/toctree.html](https://runestone.academy/ns/books/published/pythonds/AlgorithmAnalysis/toctree.html)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de2bfcaa",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## VSCode debugging demo\n",
    "\n",
    "Now we'll look at some debugging features of VSCode using two common errors from previous assignments.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff6f8d11",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Big Question\n",
    "\n",
    "Of all the algorithms we _could_ use to solve a given problem, which one _should_ we use?\n",
    "\n",
    "Things that might go into your analysis:\n",
    "\n",
    "1. Which one will be easier for me to code?\n",
    "\n",
    "2. Which one am I more confident will give me the correct results?\n",
    "\n",
    "3. Which one will run faster?\n",
    "\n",
    "4. Which one will take less computer memory?\n",
    "\n",
    "Being able to compare/predict speed and other computing resources is an important part of _computer science_. \n",
    "\n",
    "How will my code __scale__? _\"This code seems to run ok when I test it on small data sets or with a small number of users. Will it run ok when I deploy it for large data sets and a large number of users?\"_\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a5b56993",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Sum of N case study\n",
    "\n",
    "Problem: We need to write a function that will return the sum of all numbers between 1 and N. That is \n",
    "\n",
    "$$1+2+3+4+\\ldots+N$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d1f57426",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "Programmer 1 writes a loop and uses an accumulator variable to compute the sum. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "c1fa1183",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Let's code up this idea in class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8341a4c9",
   "metadata": {
    "slideshow": {
     "slide_type": "skip"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n",
      "55\n",
      "500500\n",
      "5000050000\n",
      "50000005000000\n"
     ]
    }
   ],
   "source": [
    "def sum_of_n_loop(n):\n",
    "    total = 0\n",
    "    \n",
    "    for i in range(n+1):\n",
    "        total += i\n",
    "        \n",
    "    return total\n",
    "\n",
    "print( sum_of_n_loop(3) )\n",
    "print( sum_of_n_loop(10) )\n",
    "print( sum_of_n_loop(1000) )\n",
    "print( sum_of_n_loop(100000) )\n",
    "print( sum_of_n_loop(10000000) )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7ad7f06",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "Programmer 2 does some research and discovers that there is a mathematical formula for finding the sum of all the numbers up to N. \n",
    "\n",
    "$$1+2+3+4+\\ldots+N = \\frac{N(N+1)}{2}$$\n",
    "\n",
    "Programmer 2 bases their algorithm on this forumula."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "86e51b5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Let's code up this idea in class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5e01302c",
   "metadata": {
    "slideshow": {
     "slide_type": "skip"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n",
      "55\n",
      "500500\n",
      "5000050000\n",
      "50000005000000\n"
     ]
    }
   ],
   "source": [
    "def sum_of_n_formula(n):\n",
    "    return n*(n+1)/2\n",
    "\n",
    "print( sum_of_n_loop(3) )\n",
    "print( sum_of_n_loop(10) )\n",
    "print( sum_of_n_loop(1000) )\n",
    "print( sum_of_n_loop(100000) )\n",
    "print( sum_of_n_loop(10000000) )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b78d264d",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "## Group Activity Problem 1\n",
    "We are confident that both of these solutions are correct. So, which is better?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20e7ee18",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Timing your code\n",
    "\n",
    "One way to analyze running time is to use libraries that calculate time and _instrument_ your code with them.\n",
    "\n",
    "The `time.time()` function will tell you the number of seconds on the system clock (technically the number of seconds since some arbitrary time in history like January 1, 1970, 00:00:00 (UTC)).\n",
    "\n",
    "You can use it like stop-watch like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d5ab1e42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start time: 1677174692.7210162\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "\n",
    "start_time = time.time()\n",
    "print(\"Start time:\",start_time)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "1e4cc937",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End time: 1677174692.724224\n",
      "Difference: 0.0032079219818115234 seconds\n"
     ]
    }
   ],
   "source": [
    "end_time = time.time()\n",
    "print(\"End time:\",end_time)\n",
    "\n",
    "print(\"Difference:\",(end_time-start_time),\"seconds\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e80a5d3",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Instrumenting your code\n",
    "\n",
    "to instrument your code, you could do something like this"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5822cf64",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5000000050000000\n",
      "That took 2.577965259552002 seconds\n",
      "5000000050000000.0\n",
      "That took 2.3126602172851562e-05 seconds\n"
     ]
    }
   ],
   "source": [
    "start = time.time()\n",
    "print(sum_of_n_loop(100000000))\n",
    "end = time.time()\n",
    "print(\"That took\",end-start,\"seconds\")\n",
    "\n",
    "\n",
    "start = time.time()\n",
    "print(sum_of_n_formula(100000000))\n",
    "end = time.time()\n",
    "print(\"That took\",end-start,\"seconds\")\n",
    "#print(\"That took\",f\"{end-start:.10f}\",\"seconds\") #you can do this to format your float values"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b56985a8",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "## Group Activity Problem 2\n",
    "\n",
    "Calculate the amount of time each of these functions takes on your computer for the the following values of n. Write down how long it took for each one.\n",
    "\n",
    "10000000 (ten million)\n",
    "\n",
    "20000000\n",
    "\n",
    "30000000\n",
    "\n",
    "40000000\n",
    "\n",
    "50000000\n",
    "\n",
    "Can you predict how long it will take if you run this on 1000000000 (one billion)?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bbc0f0b3",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Plotting the results\n",
    "\n",
    "I suggest plotting the running times. You could use any tool you're comfortable with - Excel, Google Sheets, etc.\n",
    "\n",
    "Here's how you can do it with Plotly using the run times from my computer\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c0b8fdde",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4XuydCZxNdf/HP/feWW2DLGmXIoqWp71EKdImlUpKUUkKKbtkKyVCFLJHq0gioiylSAtJixaPpZR9aSxj1v/rd3pm/o0Z5sz87r3zOfd+7uv/ev2fzPmd873v9xnejnPP+LKysrKglwiIgAiIgAiIgAiIgAhEKAGfgjdCzeptiYAIiIAIiIAIiIAIOAQUvDoRREAEREAEREAEREAEIpqAgjei9erNiYAIiIAIiIAIiIAIKHh1DoiACIiACIiACIiACEQ0AQVvROvVmxMBERABERABERABEVDw6hwQAREQAREQAREQARGIaAIK3ojWqzcnAiIgAiIgAiIgAiKg4NU5IAIiIAIiIAIiIAIiENEEFLwRrVdvTgREQAREQAREQAREQMGrc0AEREAEREAEREAERCCiCSh4I1qv3pwIiIAIiIAIiIAIiICCV+eACIiACIiACIiACIhARBNQ8Ea0Xr05ERABERABERABERABBa/OAREQAREQAREQAREQgYgmoOCNaL16cyIgAiIgAiIgAiIgAgpenQMiIAIiIAIiIAIiIAIRTUDBG9F69eZEQAREQAREQAREQAQUvDoHREAEREAEREAEREAEIpqAgjei9erNiYAIiIAIiIAIiIAIKHh1DoiACIiACIiACIiACEQ0AQVvROvVmxMBERABERABERABEVDw6hwQAREQAREQAREQARGIaAIK3ojWqzcnAiIgAiIgAiIgAiKg4NU5IAIiIAIiIAIiIAIiENEEFLwRrVdvTgREQAREQAREQAREQMGrc0AEREAEREAEREAERCCiCSh4I1qv3pwIiIAIiIAIiIAIiICCV+eACIiACIiACIiACIhARBNQ8Ea0Xr05ERABERABERABERABBa/OAREQAREQAREQAREQgYgmoOCNaL16cyIgAiIgAiIgAiIgAgpenQMiIAIiIAIiIAIiIAIRTUDBG9F69eZEQAREQAREQAREQAQUvDoHREAEREAEREAEREAEIpqAgjei9erNiYAIiIAIiIAIiIAIKHh1DoiACIiACIiACIiACEQ0AQVvROvVmxMBERABERABERABEVDw6hwQAREQAREQAREQARGIaAIK3ojWqzcnAiIgAiIgAiIgAiKg4NU5IAIiIAIiIAIi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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.express as px\n",
    "\n",
    "timing_results = { \"n\": [10000000,20000000,30000000,40000000,50000000],\n",
    "                 \"Loop run time\" : [0.7423880100250244, 1.56697416305542, 3.0009987354278564, 3.2959609031677246, 4.3049681186676025],\n",
    "                 \"Formula run time\" : [0.0000040531, 0.0000030994, 0.0000038147, 0.0000038147, 0.0000040531]\n",
    "                 }\n",
    "\n",
    "fig = px.scatter(timing_results,x=\"n\",y=[ \"Loop run time\",\"Formula run time\"])\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f82e7011",
   "metadata": {},
   "source": [
    "Tangent: We could even automate this..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1b74265c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4XuydCbiV497G7z3v3W6eM1U6hhByzGN0lKJSh4hUQkWKVEqJksIpzZOKUo4hJclUlOLILA4ODr4G0jxp2u328F3P29mb3d67te79rGdb73rv97q+6zva//tZ7/v7/9f26/Wsd8Xl5ubmQocIiIAIiIAIiIAIiIAIxCiBOAlvjHZWlyUCIiACIiACIiACIuARkPBqEERABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8GoGREAEREAEREAEREAEYpqAhDem26uLEwEREAEREAEREAERkPBqBkRABERABERABERABGKagIQ3pturixMBERABERABERABEZDwagZEQAREQAREQAREQARimoCEN6bbq4sTAREQAREQAREQARGQ8FrOwK9b91muEHvx5MR4lE9Pwpad+2Pv4qLgiuLj41C9Qgo2bM+IgrOJzVM4okoa9N5219vqFVOxbdd+ZGXnunuRAK9cuVwy9mZkIeNAjnMK5r2iQwT8QEDCa9kl/UuxMEAJr+VQhYhLeN3yNatLeN0ylvC65SvhdctXq/uTgITXsm8SXgmv5QjRcQkvjYwOSHhpZFRAwkvhooslvDQyBQJAQMJr2WQJr4TXcoTouISXRkYHJLw0Miog4aVw0cUSXhqZAgEgIOG1bLKEV8JrOUJ0XMJLI6MDEl4aGRWQ8FK46GIJL41MgQAQkPBaNlnCK+G1HCE6LuGlkdEBCS+NjApIeClcdLGEl0amQAAISHgtmyzhlfBajhAdl/DSyOiAhJdGRgUkvBQuuljCSyNTIAAEJLyWTZbwSngtR4iOS3hpZHRAwksjowISXgoXXRxE4d27bz8WLfsYp5xYF8fVPSosZvc/9iTqHF0Tt95wZZH1//7PT3hkwrMYN7QHqlWpGNaaKopeAhJey95IeCW8liNExyW8NDI6IOGlkVEBCS+Fiy4OovCu37gVf7uuN+7t3g4dr20aFrNrbnsQDeofiwfv6Vhk/fuffI0ufUdi0XMjcFStamGtqaLoJSDhteyNhFfCazlCdFzCSyOjAxJeGhkVkPBSuOjiIApvTk4uftu1B2lpKUhJTgqLmYQ3LEwxUyThtWylhFfCazlC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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.express as px\n",
    "\n",
    "\n",
    "timing_results = { \"n\": [10000,20000,30000,40000,50000,60000,70000,80000,90000,100000],\n",
    "                 \"Loop run time\" : [],\n",
    "                 \"Formula run time\" : []\n",
    "                 }\n",
    "\n",
    "for n in timing_results[\"n\"]:\n",
    "    start = time.time()\n",
    "    sum_of_n_loop(n)\n",
    "    end = time.time()\n",
    "    timing_results[\"Loop run time\"].append(end-start)\n",
    "\n",
    "\n",
    "    start = time.time()\n",
    "    sum_of_n_formula(n)\n",
    "    end = time.time()\n",
    "    timing_results[\"Formula run time\"].append(end-start)\n",
    "\n",
    "fig = px.scatter(timing_results,x=\"n\",y=[ \"Loop run time\",\"Formula run time\"])\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3517081c",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## $T(n)$ Time Analysis\n",
    "\n",
    "Another way we can estimate running time is by counting up the number of basic operations/steps it takes to compute something.\n",
    "\n",
    "$T(n)$ is the notation we use to describe the amount of time the algorithm takes for a problem of size $n$.\n",
    "\n",
    "Let's try to apply this to our Sum of N algorithms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "68be73e5",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "outputs": [],
   "source": [
    "def sum_of_n_loop(n):\n",
    "    total = 0  # 1 operation\n",
    "    \n",
    "    #this loop runs n+1 times\n",
    "    for i in range(n+1): #2 operations (compute the next value in the range, then assign to i)\n",
    "        total += i  #2 operations (first add, then assign value to total)\n",
    "        \n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c8f443eb",
   "metadata": {},
   "source": [
    "Outside the loop we have 1 operation\n",
    "\n",
    "Every time through the loop, we have 4 operations\n",
    "\n",
    "The loop runs $n+1$ times.\n",
    "\n",
    "So, the total number of operations is $T(n) = 4(n+1)+1$ which after doing a little math is equivlent to $T(n) = 4n+5$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ba87ef90",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sum_of_n_formula(n):\n",
    "    return n*(n+1)/2  #3 operations (add, then multiply, then divide)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a5aa3653",
   "metadata": {},
   "source": [
    "In this case $T(n)=3$\n",
    "\n",
    "Since $T(n)=3$ will always be less than $T(n) = 4n+5$, we know the formula version is better."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e1653737",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAH0CAYAAADfWf7fAAAgAElEQVR4XuydCXgUVdaGv+4sJAFk3xS3cVcUNxh1lEWRTUCCgoMoIAoiKoqIoIiAgMuvAk4UUXBccENAEHBhEYIOyICj4igz6jCiAwph35KQpft/bsWErKTq3lOp7uqvnv95ftN9z7nV76lm3pzcuhUIh8Nh8CABEiABEiABEiABEiABnxIIUHh9Wll+LBIgARIgARIgARIgAYsAhZcXAgmQAAmQAAmQAAmQgK8JUHh9XV5+OBIgARIgARIgARIgAQovrwESIAESIAESIAESIAFfE6Dw+rq8/HAkQAIkQAIkQAIkQAIUXl4DJEACJEACJEACJEACviZA4fV1efnhSIAESIAESIAESIAEKLy8BkiABEiABEiABEiABHxNgMLr6/Lyw5EACZAACZAACZAACVB4eQ2QAAmQAAmQAAmQAAn4mgCF19fl5YcjARIgARIgARIgARKg8PIaIAESIAESIAESIAES8DUBCq+vy8sPRwIkQAIkQAIkQAIkQOHlNUACJEACJEACJEACJOBrAhReX5eXH44ESIAESIAESIAESIDCy2uABEiABEiABEiABEjA1wQovL4uLz8cCZAACZAACZAACZAAhZfXAAmQAAmQAAmQAAmQgK8JUHh9XV5+OBIgARIgARIgARIgAQovrwESIAESIAESIAESIAFfE6Dw+rq8/HAkQAIkQAIkQAIkQAIUXl4DJEACJEACJEACJEACviZA4fV1efnhSIAESIAESIAESIAEKLy8BkiABEiABEiABEiABHxNgMLr6/Lyw5EACZAACZAACZAACVB4eQ2QAAmQAAmQAAmQAAn4mgCF19fl5YcjARIgARIgARIgARKg8PIaIAESIAESIAESIAES8DUBCq+vy8sPRwIkQAIkQAIkQAIkQOHlNUACJEACJEACJEACJOBrAhReX5eXH44ESIAESIAESIAESIDCy2uABEiABEiABEiABEjA1wQovL4uLz8cCZAACZAACZAACZAAhZfXAAmQAAmQAAmQAAmQgK8JUHh9XV5+OBIgARIgARIgARIgAQovrwESIAESIAESIAESIAFfE6Dw+rq8/HAkQAIkQAIkQAIkQAIUXl4DJEACJEACJEACJEACviZA4fV1efnhSIAESIAESIAESIAEKLy8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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.express as px\n",
    "\n",
    "nvals = range(0,1000,10)\n",
    "t1 = [4*n+4 for n in nvals]\n",
    "t2 = [3 for n in nvals]\n",
    "\n",
    "equation_plot = { \"n\": nvals,\n",
    "                 \"T(n)=4n+4\" : t1,\n",
    "                 \"T(n)=3\" : t2\n",
    "                 }\n",
    "\n",
    "\n",
    "fig = px.line(equation_plot,x=\"n\",y=[\"T(n)=4n+4\",\"T(n)=3\"])\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "953ea63b",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "Even if we were comparing\n",
    "\n",
    "$T(n) = 10000$\n",
    "\n",
    "to\n",
    "\n",
    "$T(n) = 4n+5$\n",
    "\n",
    "We would probably still prefer $T(n) = 10000$ because it has _constant_ growth instead of _linear_ growth.\n",
    "\n",
    "When the size of the problem gets really big, eventually the _linear_ algorithm will do worse.\n",
    "\n",
    "The big-sized cases are usually the ones we care most about - what happens to your system when it is under heavier loads?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8c34cc82",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 3\n",
    "\n",
    "Order these $T(n)$ functions from slowest to fastest growing\n",
    "\n",
    "$T(n) = 148n+12000$\n",
    "\n",
    "$T(n) = 54$\n",
    "\n",
    "$T(n) = 5n^2+33$\n",
    "\n",
    "$T(n) = 1278540$\n",
    "\n",
    "$T(n) = 2081n+6$\n",
    "\n",
    "$T(n) = 23n^2+10n+8$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bc30a84",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Big-O: Order of magnitude\n",
    "\n",
    "When looking at running time like $T(n) = 148n+12000$, the 12000 will be a bigger part of the overall number when $n$ is small, but when $n$ gets big, the $148n$ will dominate the 12000 part.\n",
    "\n",
    "So, we don't really care much about the 12000.\n",
    "\n",
    "Similarly, whene $n$ gets big, the 148 will become a lot less significant. \n",
    "\n",
    "__Conclusion:__ When looking at $T(n)$, the specific constants are not very important!\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b81ba8fb",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "#### Instead, look at $O($  $)$ - the Big-O\n",
    "\n",
    "$O$ refers to the __order of magnitude__ - it's like $T(n)$, but you get to ignore all of the constants. \n",
    "\n",
    "Big-O is the primary way we measure __computational complexity__.\n",
    "* can be used for measuring _time_ complexity or _space_ (i.e., memory) complexity\n",
    "* unless stated otherwise, assume it's talking about _time complexity_ - describing how the running time of an algorithm grows with larger inputs\n",
    "\n",
    "All of these functions can be described as $O(n)$, also known as _linear_ because they grow linearly with $n$\n",
    "\n",
    "* $T(n) = 148n+12000$\n",
    "\n",
    "* $T(n) = 4n+5$\n",
    "\n",
    "* $T(n) = 2081n+6$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fe73f58",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "These functions are all $O(n^2)$ - also known as _quadratic_\n",
    "\n",
    "* $T(n) = 0.001n^2$\n",
    "* $T(n) = 5n^2+33$\n",
    "* $T(n) = 23n^2+10n+8$\n",
    "\n",
    "Why doesn't $T(n) = 23n^2+10n+8$ have $O(n^2+n)$ \n",
    "* again, when $n$ gets big, the $n^2$ term is what dominates\n",
    "* You only need to include the biggest term."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01d91830",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "These functions are all $O(1)$ - also known as _constant_\n",
    "\n",
    "* $T(n) = 3$\n",
    "* $T(n) = 1278540$\n",
    "* $T(n) = 54$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8dfbaad",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Determining Big-O\n",
    "\n",
    "Finding Big-O values is much easier than calculating $T(n)$ because you can ignore all the constants.\n",
    "\n",
    "Here, we can see we have _constant_ * $n$ + _constant_ number of operations, which is just $O(n)$. \n",
    "\n",
    "The only thing that depends on the _size of the input_ is the number of times the loop iterates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "cdd05a59",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sum_of_n_loop(n):\n",
    "    total = 0  # constant number of things\n",
    "    \n",
    "    #this loop runs n + constant number times\n",
    "    for i in range(n+1): #constant number of operations \n",
    "        total += i  #constant number of operations\n",
    "        \n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9265ef52",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Common Big-O functions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "794a86b8",
   "metadata": {
    "cell_style": "split",
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "\n",
    "\n",
    "<table class=\"docutils align-default\" id=\"id1\">\n",
    "<colgroup>\n",
    "<col style=\"width: 50%;text-align:center\"/>\n",
    "<col style=\"width: 50%\"/>\n",
    "</colgroup>\n",
    "<thead>\n",
    "<tr class=\"row-odd\"><th class=\"head\"><p><strong>f(n)</strong></p></th>\n",
    "<th class=\"head\"><p><strong>Name</strong></p></th>\n",
    "</tr>\n",
    "</thead>\n",
    "<tbody>\n",
    "<tr class=\"row-even\" style='text-align:center'><td><p><span class=\"math notranslate nohighlight\">\\(1\\)</span></p></td>\n",
    "<td><p>Constant</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(\\log n\\)</span></p></td>\n",
    "<td><p>Logarithmic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(n\\)</span></p></td>\n",
    "<td><p>Linear</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(n\\log n\\)</span></p></td>\n",
    "<td><p>Log Linear</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(n^{2}\\)</span></p></td>\n",
    "<td><p>Quadratic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-odd\"><td><p><span class=\"math notranslate nohighlight\">\\(n^{3}\\)</span></p></td>\n",
    "<td><p>Cubic</p></td>\n",
    "</tr>\n",
    "<tr class=\"row-even\"><td><p><span class=\"math notranslate nohighlight\">\\(2^{n}\\)</span></p></td>\n",
    "<td><p>Exponential</p></td>\n",
    "</tr>\n",
    "</tbody>\n",
    "</table>\n",
    "\n"
   ]
  },
  {
   "attachments": {
    "bigoshapes.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "id": "36c53324",
   "metadata": {
    "cell_style": "split"
   },
   "source": [
    "\n",
    "<center>\n",
    "<div>\n",
    "<img src=\"attachment:bigoshapes.png\" width=\"700\"/>\n",
    "</div>\n",
    "</center>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3bc5680",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 4: Big-O of Searching\n",
    "\n",
    "Here is an example of the `search_for()` function that we wrote during the first week of class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d42fb127",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "def search_for(item, list_to_search_in):\n",
    "    \"\"\"\n",
    "    item: the item you're supposed to search for\n",
    "    list_to_search_in: the list you're supposed to look through to find item\n",
    "    return: True or False depending on if item is contained in list_to_search_in\n",
    "    \"\"\"\n",
    "    for curr_item in list_to_search_in:\n",
    "        if item == curr_item:\n",
    "            return True\n",
    "    \n",
    "    return False\n",
    "\n",
    "#let's test it on some examples\n",
    "print( search_for(42,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(35,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(12,[35,66,70,5,42,10,12]) )\n",
    "print( search_for(9,[35,66,70,5,42,10,12]) )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e1c77ef",
   "metadata": {},
   "source": [
    "What is the $n$ in this algorithm? That is, what tells you the \"size\" of the input?\n",
    "\n",
    "What is the Big-O of this algorithm?\n",
    "\n",
    "Are the number of steps different for the different test cases?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4525ed41",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "What is the Big-O of the algorithm below?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "33f76300",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "def search_for_alternate(item, list_to_search_in):\n",
    "    \"\"\"\n",
    "    item: the item you're supposed to search for\n",
    "    list_to_search_in: the list you're supposed to look through to find item\n",
    "    return: True or False depending on if item is contained in list_to_search_in\n",
    "    \"\"\"\n",
    "    return (item in list_to_search_in)\n",
    "\n",
    "#let's test it on some examples\n",
    "print( search_for_alternate(42,[35,66,70,5,42,10,12]) )\n",
    "print( search_for_alternate(35,[35,66,70,5,42,10,12]) )\n",
    "print( search_for_alternate(12,[35,66,70,5,42,10,12]) )\n",
    "print( search_for_alternate(9,[35,66,70,5,42,10,12]) )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "34dc820d",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Best, Average, and Worst Case\n",
    "\n",
    "Different inputs (of the same size) to the same algorithm might result in different running times\n",
    "\n",
    "__Best case__ performance: running time on the input that allows the algorithm to finish the fastest\n",
    "\n",
    "__Worst case__ performance: running time on the input that requires the most time for the algorithm to finish\n",
    "\n",
    "__Average case__ performance: average running time over typical inputs\n",
    "* often it is difficult to determine what the _typical_ inputs are that should be considered\n",
    "\n",
    "Unless otherwise stated, Big-O is assumed to be talking about _worst case performance_.\n",
    "\n",
    "What are the best, worst, and average cases for `search_for()`?"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6e85d64",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Group Activity Problem 5: Anagram Detection\n",
    "\n",
    "An _anagram_ is a word or phrase that can be formed by rearranging the letters of a different word or phrase.\n",
    "\n",
    "Examples of anagrams include\n",
    "\n",
    "silent, listen\n",
    "\n",
    "night, thing\n",
    "\n",
    "the morse code, here come dots\n",
    "\n",
    "eleven plus two, twelve plus one"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a15e42c",
   "metadata": {},
   "source": [
    "__Problem:__ Write a function that will tell you if two strings are anagrams."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10533571",
   "metadata": {},
   "source": [
    "The book provides four different solutions in Section 3.4. Three of them are reproduced below. \n",
    "\n",
    "Each group will be assigned one of these solutions. Do the following as a group.\n",
    "\n",
    "1. Test the code on several inputs of different sizes.\n",
    "2. Instrument the code to measure the time it takes on different-sized inputs.\n",
    "3. Give examples of best, worst, and average case inputs.\n",
    "4. Determine what the Big-O of the algorithm is, and be ready to explain why.\n",
    "\n",
    "If you have time, you can check out what it says in the book, but try to analyze it without looking first!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6836ee76",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 1: Checking off\n",
    "\n",
    "This code works by converting the second string into a list and then search through the list for each character from the first string and replacing it with `None` when found.\n",
    "\n",
    "For example, if given `\"silent\"` and `\"listen\"`, the list would start out as\n",
    "\n",
    "`['l','i','s','t','e','n']`\n",
    "\n",
    "when searching for `'s'`, it becomes `['l','i',None,'t','e','n']`\n",
    "\n",
    "when searching for `'i'`, it becomes `['l',None,None,'t','e','n']`\n",
    "\n",
    "... and so until the list becomes `[None,None,None,None,None,None]`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "c2c50913",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution1(s1,s2):\n",
    "    stillOK = True\n",
    "    if len(s1) != len(s2):\n",
    "        stillOK = False\n",
    "\n",
    "    alist = list(s2)\n",
    "    pos1 = 0\n",
    "\n",
    "    while pos1 < len(s1) and stillOK:\n",
    "        pos2 = 0\n",
    "        found = False\n",
    "        while pos2 < len(alist) and not found:\n",
    "            if s1[pos1] == alist[pos2]:\n",
    "                found = True\n",
    "            else:\n",
    "                pos2 = pos2 + 1\n",
    "\n",
    "        if found:\n",
    "            alist[pos2] = None\n",
    "        else:\n",
    "            stillOK = False\n",
    "\n",
    "        pos1 = pos1 + 1\n",
    "        \n",
    "        #uncomment this if you want to see what the list looks like at each step\n",
    "        #print(alist)\n",
    "\n",
    "    return stillOK\n",
    "\n",
    "print(anagramSolution1('silent','listen'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4deb32d8",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 2: Sort and Compare\n",
    "\n",
    "This solution starts by converting both strings to lists and then sorting them. Once in sorted order, it goes through and checks that each corresponding item in the list is the same.\n",
    "\n",
    "For example, if given `\"silent\"` and `\"listen\"`, it would turn them into lists `['s', 'i', 'l', 'e', 'n', 't']` and `['l', 'i', 's', 't', 'e', 'n']`.\n",
    "\n",
    "Then, after sorting each list, we get `['e', 'i', 'l', 'n', 's', 't']` and `['e', 'i', 'l', 'n', 's', 't']`.\n",
    "\n",
    "We then compare `e` to `e`, then `i` to `i`, then `l` to `l` and so on. If we ever find two that don't match, we know it isn't an anagram. If we get to the end and they all match, it is an anagram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "9a459ddb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution2(s1,s2):\n",
    "    alist1 = list(s1)\n",
    "    alist2 = list(s2)\n",
    "\n",
    "    alist1.sort()\n",
    "    alist2.sort()\n",
    "    \n",
    "    #uncomment these if you want to see the sorted lists\n",
    "    #print(alist1)\n",
    "    #print(alist2)\n",
    "\n",
    "    pos = 0\n",
    "    matches = True\n",
    "\n",
    "    while pos < len(s1) and matches:\n",
    "        if alist1[pos]==alist2[pos]:\n",
    "            pos = pos + 1\n",
    "        else:\n",
    "            matches = False\n",
    "\n",
    "    return matches\n",
    "\n",
    "print(anagramSolution2('silent','listen'))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b77ccbba",
   "metadata": {
    "slideshow": {
     "slide_type": "subslide"
    }
   },
   "source": [
    "## Solution 4: Count and Compare\n",
    "\n",
    "This solution creates a list of letter frequencies for each string. Since there aree 26 letters in the alphabet, the strings will each have 26 entries - the first entry is the number of occurrences of `'a'`, the secondd is the number of occurrences of `'b'`, and so on. \n",
    "\n",
    "We can then loop through these frequency lists and compare them item by item to see if they're the same.\n",
    "\n",
    "For example, given inputs `'elevenplustwo'` and `'twelveplusone'`, you end up with the frequency lists\n",
    "\n",
    "`[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0]`\n",
    "\n",
    "and \n",
    "`[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0]`\n",
    "\n",
    "looping through this list entry by entry will show that they are the same.\n",
    "\n",
    "On the other hand, if given inputs `'granma'` and `'anagram'`, you'd get the frequency lists\n",
    "\n",
    "`[2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]`\n",
    "\n",
    "`[3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]`\n",
    "\n",
    "And you can determine they are not anagrams, because the first list has a 2 in the `a` position while the second one has a `3`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8378da18",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "def anagramSolution4(s1,s2):\n",
    "    c1 = [0]*26\n",
    "    c2 = [0]*26\n",
    "\n",
    "    for i in range(len(s1)):\n",
    "        pos = ord(s1[i])-ord('a')\n",
    "        c1[pos] = c1[pos] + 1\n",
    "\n",
    "    for i in range(len(s2)):\n",
    "        pos = ord(s2[i])-ord('a')\n",
    "        c2[pos] = c2[pos] + 1\n",
    "        \n",
    "    #uncomment these if you want to see the word frequency lists\n",
    "    #print(c1) \n",
    "    #print(c2)\n",
    "\n",
    "    j = 0\n",
    "    stillOK = True\n",
    "    while j<26 and stillOK:\n",
    "        if c1[j]==c2[j]:\n",
    "            j = j + 1\n",
    "        else:\n",
    "            stillOK = False\n",
    "\n",
    "    return stillOK\n",
    "\n",
    "print(anagramSolution4('elevenplustwo','twelveplusone'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8d1ce1fe",
   "metadata": {
    "slideshow": {
     "slide_type": "skip"
    }
   },
   "outputs": [],
   "source": [
    "#ignore this cell - it's just so I can export the images for the web page\n",
    "import plotly.io as pio\n",
    "pio.renderers.default = \"png\""
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
