Conceptual Questions
1
.
Explain the difference between algorithms and programs.
2
.
Explain the difference between data structures and abstract data types.
3
.
Explain the relationship between data representation, data structures, and algorithms.
4
.
What is the relationship between search algorithms and the searching problem?
5
.
What is the relationship between search algorithms and the autocomplete feature?
6
.
Why is algorithmic correctness difficult to determine?
7
.
What are some limitations of experimental analysis?
8
.
What are some benefits of experimental analysis over asymptotic analysis?
9
.
Why is a 1-element list the best-case situation for sequential search?
10
.
If phone numbers are ten digits long and can contain digits from zero through nine, what is the total number of potential phone numbers?
11
.
Why might we prefer a sub-optimal greedy algorithm over a correct brute-force algorithm?
12
.
What’s problematic about the statement, "municipal broadband planning reduces to Kruskal’s algorithm"?
13
.
Describe the relationship between the pivot element and the left and right sublists after the first partition in quicksort.
14
.
The runtime of Kruskal’s algorithm is in O(|E| log |E|) with respect to |E|, the number of edges. What primarily contributes to this linearithmic order of growth?
15
.
Both Prim’s algorithm and Dijkstra’s algorithm are greedy algorithms that organize vertices in a priority queue data structure. What is the difference between the ordering of vertices in the priority queue for Prim’s algorithm and Dijkstra’s algorithm?
16
.
What is the relationship between models of computation and algorithms?
17
.
What is the common difficulty preventing us from designing an efficient algorithm for solving NP-complete problems?
18
.
What are the consequences of P = NP?