COSC 2371 Topic Outline

advertisement
COSC 2336 Topic Outline
Data Structures & Algorithm Analysis
I. Linear Structures
A. Stack
B. Queue
C. SLL - Single Linked List
D. DLL - Double Linked List
II. Implementation Schemes for Data Structures
A. Language Primitive (Show variations among languages.)
1. Integer
2. Real
3. String (Static, Dynamic, and Hybrid)
4. Set
5. Record, Struct, Heterogeneous Aggregate
6. Array, Homogeneous Aggregate
7. Others, (Stack, List, Logical, Complex, etc.)
B. Programmer Defined
1. Static with Implicit Pointers (Typically using an array.)
2. Dynamic with Explicit Pointers (Typically using dynamic variables.)
3. Static with Explicit Pointers (Typically using static data.)
C. Language Assisted
Through interfaces and utilities (Java) and imports(C++),
modern languages such as Java and C++ provide support for
lists and trees containing any sort of object, as well as sets,
hash tables, etc.
III. Non-Linear Structures
A. MLL - Multi-Linked List
B. Binary Tree
1. PreOrder, PostOrder, InOrder, and LevelOrder Traversals
2. Binary Search Tree (BST)
3. Expression Tree
4. Heap
C. M-ary Tree
D. Huffman Algorithm for Text Compaction
E. M-ary Tree implemented as a binary tree
F. Height Balanced Binary Search Tree (AVL Tree)
G. B tree, B+ Tree
H. Game Trees (Alpha-Beta Pruning)
I. Optimal Binary Search Tree
J. Graphs
1. Directed
2. Undirected
3. Implementations
a. Connectivity Matrix
b. Weighted Connectivity Matrix
c. N union E as an MLL
d. Array-Array and Array-List combinations
e. Efficient storage for sparse matrices
K. Graph Algorithms
1. Breadth First and Depth First Graph Traversals
2. Dijkstra’s Minimum Spanning Tree of a Graph
3. Single Source, Shortest Paths
4. All Pairs, Shortest Paths
5. Traveling Salesman ( 2-opting heuristic)
L. Heap implementations (with heap sort)
IV. Internal Sorting
A. Bubble, Selection, Insertion, etc.
B. BST Sort
C. Heap Sort (max-heaps and min-heaps)
D. Quick Sort with variations
E. Bin or Radix Sort
F. Address Calculation Sorting Techniques
G. Merge Sort
H. Shell Sort (if time permits)
V. External Sorting
A. Merging Sorted Files
B. External Merge Sort
VI. Introduction to Algorithm Analysis (Primarily computation time, but
may include other resources such as memory in some cases.)
A. Worst Case Analysis - Upper Bound (Big Oh)
B. Best Case Analysis - Lower Bound (Big Omega)
C. Average Case Analysis - Expected Value (Called Big A)
VII. Introduction to File Structures (if time permits)
A. Sequential Files
B. Indexed Files
C. Indexed Sequential Files
D. Inverted Files
VIII. Searching
A. Linear Search
B. Binary Search
C. Binary Search Tree
D. Hashing and Symbol Tables
1. Open or Bucket Hashing
2. Closed Hashing (Linear Quotient)
IX. Algorithmic Styles and Techniques
A. Recursion (Direct and Mutual)
B. Divide and Conquer
C. Greedy Method
D. Exhaustive Search
E. Backtracking
F. Dynamic Programming
G. Two-Opting
H. Introduction to Stochastic and Event Driven Simulation
X. Notes
1.
2.
3.
4.
5.
6.
7.
The grouping above is logical and does not coincide with the order in which the
material is taught.
The concept of a heap is saved until the heap sort is discussed.
The BST sort is used as a tree example before the bulk of the other sorts are
discussed.
The algorithm analysis material is discussed as needed, primarily during the
discussion of sorting and searching techniques.
As recursion techniques are particularly useful for tree algorithms, recursion is
primarily discussed in conjunction with this topic. Some of the possible
applications of recursion to linear structures are also discussed.
Program assignments are designed so as to require the student to implement
data structures using all three basic implementation schemes.
Program assignments are designed to implement at least: SLL and/or DLL, Stack
and/or Queue, Binary Tree, MLL, Recursion, and Graph.
Download