Lecture28MRM

Download Report

Transcript Lecture28MRM

Course Review
15-211
Fundamental Structures
of Computer Science
Margaret Reid-Miller
28 April 2005
What was this course about?
How to solve computing problems.
• Problem analysis, to abstract away details
and divide into smaller subproblems.
• Mathematical foundations for precise
formulations of problems and solutions.
• Data structures and algorithms to solve
problems correctly and efficiently.
• Java programming and modular software
construction for good implementations.
Data Structures
-
Lists
Trees
Tries
Priority Queues
Hash Table
-
Graphs
Equiv. Relations
FSMs
Geometry
Polynomials
Really not basic DS, more conceptual.
Algorithms
-
Searching
Hashing
Sorting
Compression
String Matching
- Graph Algorithms
- Dynamic Programming
- Games
- Polynomial Comp.
- Comp. Geometry
Complexity.
Correctness.
Applications.
Programming
Object oriented programming.
Correctness (loop invariants, induction).
Time and space complexity.
Debugging (test harness).
Studying for the Final Exam
Review all material first
• Lectures, programs, quizzes
Do sample finals – under time
restrictions
Old finals are in
blackboard/assignments
Types and difficulty of problems may
be similar (some topics not covered)
Solving Recurrences, Asymptotics
Solve T(n) = 3 T(n/3) + 1
Prove the correctness
• By induction
• Invariants
 Hold initially
 Preserved after each iteration of loop or method call
• Or other methods
Big-Oh, little-oh, Big-Omega, Theta
• Master Theorem
Sorting and lower bounds
N2 vs Nlog N
Quicksort idea
 Choose a pivot.
N^2
Nlog N
Upper and lower bounds
T(N) = O(f(N))
T(N) = (g(N))
 Rearrange so that
pivot is in the
“right” spot.
 Recurse on each
half and conquer!
cf(N)
T(N)
dg(N)
N
Sorting and lower bounds
Insertion Sort
Selection Sort
Heapsort
Mergesort
Quicksort
Radix Sort
Binary Trees
1. Traverse the tree inorder
2. Do exactly two rotations so that
the tree is balanced
3. Consider a binary tree of height h
a. What are the max and min number of
nodes?
b. What are the max and min number of
leaves?
4. Perfect, full, complete trees
Balanced Binary Trees
Dictionaries
Keypad IM Trie
4
5
9
…
I
4
6
6
5
3
8
8
3
like
you
Separate chaining
love
5
…
9
lovely
 Build chains when keys hash to the
same table location
0
1
2
3
4
5
6
7
8
9
10
11
12
As
with
long
key
int
hash
foo
foo
link
char
url
open
list
in
onto
type
queue
test
info
fail
find
Hashing
Describe why hashing a string to sum
of its characters is not a good idea.
Assume S = a1a2….an is a string
Define H(S) =  ai2i-1 (i=1..n)
Describe a way to efficiently calculate
H(S)
Priority Queues and Heaps
Suppose you implement a priority
queue using following
• Unsorted array
• Linked list (smallest at front)
• Heap
What is the complexity in each case
for
• deleteMin
• insert
Binary heaps
Representing complete binary trees
• Arrays (1-based)
 Parent at position i
 Children at 2i (and 2i+1).
1 2 3
4 5 6 7
8 9 10
1
2
4
8
5
9
Percolation down
3
10
6
7
• Bubble the transplanted leaf value down
the tree until the heap order property is
satisfied.
1
2
-14
16
24
21
65 26
32 31
19 68
31
14
24
65 26
16
21
32
19 68
Compression
Compare two images
Binary LZW: Compression example
10010110011
^
Input:
0
Dictionary:
0
1
0
1
1
1
0
0
One image is 400K the other is 1100K. Which is which?
2
1
Tree representation
3
0
4
Output:
1034
1
5
• Represent prefix free
codes as full binary trees
0
• Full: every node
 Is a leaf, or
 Has exactly 2 children.
• The encoding is then a
(unique) path from the
root to a leaf.
0
0
c
1
a
1
d
1
b
a=1, b=001, c=000, d=01
LZW compression
Binary LZW: Compression example
10010110011
^
Input:
0
Dictionary:
0
1
0
1
1
1
0
0
2
1
3
0
4
Output:
1034
1
5
Data Compression
Encode “I AM SAM SAM I AM SAM SAM”
using
• Huffman compression
• LZW
• In each case calculate the compression ratio
Is it possible to apply Huffman after
applying LZW?
If so apply Huffman to output generated by
LZW above
Graphs
What is breadth first traversal?
What is depth first traversal?
What data structures can be used to
implement each one?
Reachability
Connected components
Topological sort
Graphs
Dijkstra’s algorithm
2
f
c
4
2
1
s
2
4
b
5
a
e
1
1
g
d
a e f g
4 6 6 
Visited
s (D = 0)
b (D = 2)
d (D = 3)
c (D = 4)
Graphs
Adjacency lists and matrices
Traversal (DFS, BFS)
Reachability (DFS, BFS, Warshall)
Shortest Paths (Dijkstra, BellmanFord)
MST (Prim, Kruskal)
Greedy Algorithms
60
40
60
20
50
40
40
40
50
50
60
10
20
20
100
20
30
50
40
150
Find the Shortest Path from Node 1 to every other node
Dynamic Programming
Dependent subproblems, recursive
solutions, memoizing, explicit tables.
Knapsack
Longest Common Subsequence
Matrix Multiplication
Floyd-Warshall-Kleene
Dynamic Programming
Consider a sequence of n numbers, A = {a1,
a2, a3, ..., an}. A subsequence of a
given sequence is just the given
sequence with 0 or more of the elements
removed.
Let's find an algorithm that finds the
subsequence, A' = {ai1, ai2, ai3, ...aik} of A
that maximizes ai1 - ai2 + ai3 - ... +- aik
(i.e. the sign alternates).
Game trees
A Tic Tac Toe Game Tree
moves
moves
moves
Games
2-person, deterministic, complete
information, ...
Backtracking
MiniMax
Alpha-beta pruning
Heuristics, iterative deepening, move order,
tricks, ...
Union-find
Union, v.0
1
3
2
 {1,2}{0,3}{4}{5}
{1,2,0,3}{4}{5}
1
 union(0,2)
s: 3 -1 1 -1 -1 -1
s’: 3 -1
0
1
1
2
1 -1 -1
3
4
5
4
5
0
2
4
3
5
0
before
after
public void union(int x, int y){
s[find(x)] = find(y);
}
Trick 2: Path compression
 find flattens trees
• Redirect nodes to point directly to the root
 Example: find(0)
1
2
4
3
5
1
2
3
0
4 5
0
 Do this whenever traversing a path from
node to root.
String matching
Polynomials
Horner’s method
Lagrange interpolants
secret sharing
Karatsuba Alg
Integer & polynomial multiplication
FFT method for polynomial multiplication
Schwartz: Is polynomial identically zero?
Computational Geometry
Intersections
How do we check if two lines intersect?
A +  (B - A) = C +  (D – C)
Two linear equations, two unknowns , 
Add constraints on  for
intersection of rays, line segments.
B
C
A
D
Computational Geometry
Points, lines, rays, line segments
Intersection, turns
Membership in region
Convex hull
Divide-and-Conquer (QuickHull, ...)
Lower Bound
Final Exam
Thursday, May 5, 8:30 –11:30 am
McConomy
(*not* in WeH 7500)
Sugary stuff will be provided ...
Make sure not to be late.
Final Exam
Closed book, no calculators, cell
phones, pagers, IM, …
You can bring 1 (one) page of notes.
Bring fluids
Conclusion
Review all material
Do all sample quizzes and finals
Good luck!!