{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Lecture 16 - Breadth First Search\n",
        "\n",
        "In this lecture, we will discuss -\n",
        "\n",
        "1. Breadth First Search\n",
        "2. Queues - the FIFO data structure\n",
        "3. Applications of BFS\n",
        "\n",
        "Announcements\n",
        "\n",
        "1. Lab 7 due on Thursday\n",
        "2. Exam 2 review session this Friday\n",
        "3. Exam 2 - Graphs, DFS, Topological sort, BFS"
      ],
      "metadata": {
        "id": "MQKLbKaubzOq"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Discovery clicker\n",
        "\n",
        "Scan and use join code 277\n",
        "\n",
        "![Q1.png](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAIAAAQCCAYAAAA2IFq1AAAAAXNSR0IArs4c6QAAIABJREFUeF7s29GOJr0RbFfp/R9aBnxn2HBjz2lyYlhLtxNdZO4IJqvy+/Xf//3vf//7j/8hgAACCCCAAAIIIIAAAggggMAnCPzXIOATPisSAQQQQAABBBBAAAEEEEAAgf+bgEGAICCAAAIIIIAAAggggAACCCDwIQIGAR8yW6kIIIAAAggggAACCCCAAAIIGATIAAIIIIAAAggggAACCCCAAAIfImAQ8CGzlYoAAggggAACCCCAAAIIIICAQYAMIIAAAggggAACCCCAAAIIIPAhAgYBHzJbqQgggAACCCCAAAIIIIAAAggYBMgAAggggAACCCCAAAIIIIAAAh8iYBDwIbOVigACCCCAAAIIIIAAAggggIBBgAwggAACCCCAAAIIIIAAAggg8CECBgEfMlupCCCAAAIIIIAAAggggAACCBgEyAACCCCAAAIIIIAAAggggAACHyJgEPAhs5WKAAIIIIAAAggggAACCCCAgEGADCCAAAIIIIAAAggggAACCCDwIQIGAR8yW6kIIIAAAggggAACCCCAAAIIGATIAAIIIIAAAggggAACCCCAAAIfImAQ8CGzlYoAAggggAACCCCAAAIIIICAQYAMIIAAAggggAACCCCAAAIIIPAhAgYBHzJbqQgggAACCCCAAAIIIIAAAggYBMgAAggggAACCCCAAAIIIIAAAh8iYBDwIbOVigACCCCAAAIIIIAAAggggIBBgAwggAACCCCAAAIIIIAAAggg8CECBgEfMlupCCCAAAIIIIAAAggggAACCBgEyAACCCCAAAIIIIAAAggggAACHyJgEPAhs5WKAAIIIIAAAggggAACCCCAgEGADCCAAAIIIIAAAggggAACCCDwIQIGAR8yW6kIIIAAAggggAACCCCAAAIIGATIAAIIIIAAAggggAACCCCAAAIfImAQ8CGzlYoAAggggAACCCCAAAIIIICAQYAMIIAAAggggAACCCCAAAIIIPAhAgYBHzJbqQgggAACCCCAAAIIIIAAAggYBMgAAggggAACCCCAAAIIIIAAAh8iYBDwIbOVigACCCCAAAIIIIAAAggggIBBgAwggAACCCCAAAIIIIAAAggg8CECBgEfMlupCCCAAAIIIIAAAggg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QgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSeawbNNSAAAgAElEQVTFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq7nltSebFaxPYqqv52lahmsAmYBCweakmQCAk4It7a0b1B9G2CtVVgep+rOae15ZkXrw2ga26mq9tFaoJbAIGAZuXagIEQgK+uLdmVH8QbatQXRWo7sdq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sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDUE7ARTPkTAtWLdHU/Vr2qYaz2sepVzVe1j1Wvar70cesMr81LNYGTAtX9eHLNnzzbIGDU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)"
      ],
      "metadata": {
        "id": "bZk_tukynU3a"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Motivation for Breadth First Search\n",
        "\n",
        "\n",
        "**Depth First Search - Shortcomings**\n",
        "\n",
        "* DFS does not guarantee finding the shortest path between given vertices $s$ and $t$. This is often an important consideration. (Consider finding a flight route from Champaign to Melbourne with the fewest number of hops)\n",
        "\n",
        "* This is primarily because DFS isn't set up to find the shortest path. It is designed instead to explore the graph in a depth first manner."
      ],
      "metadata": {
        "id": "I2qTh-O-Y843"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Breadth First Search - Main Idea\n",
        "\n",
        "Breadth first Search explores the graph in a breadth-first manner. The main idea here is to explore all edges of the start vertex before looking at all edges going out of each of its neighbors.\n",
        "\n",
        "So, in a sense, BFS explores frontiers starting out from the start vertex.\n",
        "\n",
        "* Start from a vertex of your choice and explore the graph in a breadth oriented manner. That is, go to the vertices at the next level before moving on to further levels.\n",
        "\n",
        "\n",
        "* Repeat this process until there are no new vertices to visit.\n",
        "\n",
        "Let us look at the working of BFS on undirected graphs.\n",
        "\n",
        "https://visualgo.net/en/dfsbfs"
      ],
      "metadata": {
        "id": "SC9n_ww5bu9v"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "#BFS - Implementation\n",
        "\n",
        "*  BFS has a start vertex - and the graph (edges) will be explored relative to this vertex.\n",
        "*  We want to process all edges going out of start vertex before moving to the next level. So, a DFS style exploration strategy will not work here.\n",
        "*  In order to process all neighboring vertices of $s$ before exploring their neighbors, we need to use a data structure that prioritizes earlier vertices over later ones. This abstract data structure should implement a First In First Out strategy. Queues are the data structure that do this.\n",
        "\n",
        "* We will <u>store the parents of each vertex</u> to be able to **trace paths** (this is similar to DFS since the motivation is the same).\n",
        "\n",
        "* In addition, we will **use a distance list** that <u>monitors the distance of each vertex from $s$ </u> - this is the BIG advantage of BFS - **the exploration style is aimed at finding shortest paths**.\n",
        "\n"
      ],
      "metadata": {
        "id": "bVx63u-zc9ru"
      }
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "W0WtsHBGbs9o",
        "outputId": "80e4bae6-9d8a-4cb2-f1ee-d36d09d8a2d0"
      },
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[0, 1, 1, 2, 2, 2, 3, 3]\n"
          ]
        }
      ],
      "source": [
        "#Implementation of Breadth First Search\n",
        "\n",
        "#input - Graph G, starting vertex s\n",
        "#output - distance of each vertex from s\n",
        "\n",
        "def bfs(G,s):\n",
        "  # number of vertices in G\n",
        "  n = len(G)\n",
        "\n",
        "  # initialize dist to be max possible distance\n",
        "  dist = [n]*len(G)\n",
        "\n",
        "  # noting down the parent of each vertex\n",
        "  parent = [None]*len(G)\n",
        "\n",
        "  # start the search from s\n",
        "  dist[s] = 0\n",
        "  queue = [s]\n",
        "\n",
        "  # start exploring\n",
        "  while queue != []:\n",
        "    # remove first element in the queue and explore its neighbors\n",
        "    u = queue.pop(0)\n",
        "    for v in G[u]:\n",
        "      if dist[v] == n:\n",
        "        # v has not been visited\n",
        "        dist[v] = dist[u] + 1\n",
        "        parent[v] = u\n",
        "        queue.append(v)\n",
        "\n",
        "  # return the list distance storing the shortest distance to each vertex\n",
        "  return dist\n",
        "\n",
        "print(bfs([[1,2],[0,3,4,5],[0],[1,5,6],[1,6,7],[1,3],[3,4],[4]],0))"
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# BFS observations\n",
        "\n",
        "1.   Shortest paths discovered - BFS exploration strategy ensures that the shortest path from the start vertex $s$ is discovered for each of the other vertices that are reachable from $s$.\n",
        "\n",
        "2.  Unreachable vertices identified - Vertices which are at a distance of $n$ from the starting vertex are clearly unreachable from $s$.\n",
        "\n",
        "\n",
        "3.   Linear time - The time complexity of BFS is the same as that of DFS. Since each vertex is pushed to the queue only once, its edges are processed exactly once. This ensures that the time spent per edge is $O(1)$. Since the distance and parent lists require an initiation time of $O(|V|)$, the total time taken is $O(|V| + |E|)$.\n",
        "\n"
      ],
      "metadata": {
        "id": "pFxHT-rsnbqm"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Queues\n",
        "\n",
        "A queue is a collection of objects that operates on the First In First Out principle (FIFO) - the first object in is the first object out.\n",
        "\n",
        "Queues are typically used for task scheduling - printers that receive multiple requests execute jobs in a first in first out manner. Printers use queues to maintain task requests. Keyboard buffers use a queue to prevent loss of typed data during lags - and since this data must appear in the sequence in which it was typed, buffers use queues.\n",
        "\n",
        "Queue operations visualization - https://visualgo.net/en/list\n"
      ],
      "metadata": {
        "id": "bSwKO2fsc2tX"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "**Queues - Python Implementation**\n",
        "\n",
        "\n",
        "\n",
        "1.   Queues in python can be implemented using lists.\n",
        "2.   Adding an element - queue.append can be used to add an element to the end of the queue\n",
        "3.   Removing an element - The elment at the front of the queue can be removed by using queue.pop(0)\n",
        "4.  Size of the queue - Since python lists store length, one can use len(queue) to find out the number of elements in the queue.\n",
        "\n",
        "\n",
        "Reference - https://www.w3schools.com/python/python_dsa_queues.asp\n",
        "\n",
        "> Play around with the queue data structure using the code below to better understand how to work with queues.\n",
        "\n"
      ],
      "metadata": {
        "id": "I0FYZElknfdN"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Queues\n",
        "\n",
        "queue = []\n",
        "\n",
        "# Enqueue\n",
        "queue.append('A')\n",
        "queue.append('B')\n",
        "queue.append('C')\n",
        "print(\"Queue: \", queue)\n",
        "\n",
        "# Peek\n",
        "frontElement = queue[0]\n",
        "print(\"Peek: \", frontElement)\n",
        "\n",
        "# Dequeue\n",
        "poppedElement = queue.pop(0)\n",
        "print(\"Dequeue: \", poppedElement)\n",
        "\n",
        "print(\"Queue after Dequeue: \", queue)\n",
        "\n",
        "\n",
        "# Size\n",
        "print(\"Size: \", len(queue))\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "MyvYppoIcjdA",
        "outputId": "e3da4dd4-d277-4ab6-8115-017c043a938e"
      },
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Queue:  ['A', 'B', 'C']\n",
            "Peek:  A\n",
            "Dequeue:  A\n",
            "Queue after Dequeue:  ['B', 'C']\n",
            "Size:  2\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "# BFS : Applications\n",
        "\n",
        "\n",
        "\n",
        "*   Shortest paths - BFS helps find shortest paths from $s$ to all other vertices.\n",
        "*   Finding \"close\" vertices - BFS can be used to identify all vertices that are close to $s$ - closeness measured in terms of number of edges needed to reach a vertex.\n",
        "* Graph exploration - Like DFS, BFS uses linear time to explore the connectivity structure of a graph.\n",
        "* Finding paths - Like DFS, BFS helps identify whether there exists any path from one vertex to another.\n",
        "* Cycle Detection - BFS can be used to detect the existence of cycles.\n",
        "\n"
      ],
      "metadata": {
        "id": "7n0_-hqS-emP"
      }
    }
  ]
}