- Explain the algorithms used for the following classical search algorithms: linear search, jump search, and binary search. Explain which algorithms can be used on sorted data and which can be used on unsorted data. Explain the expected computational run time of each method, at both the average and worst case scenarios.
- Explain the three parts of Grover’s algorithm and the role they play in searching through the list of states. The three parts are creating a superposition, applying the search oracle, and applying the diffusion algorithm.
- Explain how the search oracle marks the desired states. Create and implement a search oracle to mark one or more desired states.
- Explain the components in the diffusion algorithm and the overall goal of the diffusion algorithm. Implment the diffusion algorithm from scratch and using the built-in Qiskit functionality.
- Create a from scratch implementation of Grover’s algorithm for binary strings of any size and with any number of marked states.