About CIT597

Download Report

Transcript About CIT597

CIT 594
19-Jul-16
Basic content




CIT 594 is a continuation of CIT 591
Java will be used throughout
However, CIT 594 is not primarily a course about Java
Topics:

Data Structures



Algorithms


Supplied by Java
How to create your own
A sampling of some better-known algorithms
Analysis of algorithms

Simple algebra is required
Types of Collection


A collection is a structured group of objects
Java supplies several types of Collection:




Set: cannot contain duplicate elements, order is not important
SortedSet: like a Set, but order is important
List: may contain duplicate elements, order is important
Java also supplies some “collection-like” things:


Map: a “dictionary” that associates keys with values, order is
not important
SortedMap: like a Map, but order is important
The Collections hierarchy
Uniformity through interfaces


Much of the elegance of the Collections Framework
arises from the intelligent use of interfaces
For example, the Collection interface specifies
(among many other operations):






boolean add(Object o)
boolean isEmpty()
boolean remove()
int size()
Object[] toArray()
Iterator iterator()
Creating lists in Java
myList:
44
97
class Cell {
int value;
Cell next;
Cell (int v, Cell n) { // constructor
value = v;
next = n;
}
}
Cell temp = new Cell(17, null);
temp = new Cell(23, temp);
temp = new Cell(97, temp);
Cell myList = new Cell(44, temp);
23
17
A short list of categories

Algorithm types we will consider include:








Simple recursive algorithms
Backtracking algorithms
Divide and conquer algorithms
Dynamic programming algorithms
Greedy algorithms
Branch and bound algorithms
Brute force algorithms
Randomized algorithms
Example recursive algorithms

To count the number of elements in a list:




If the list is empty, return zero; otherwise,
Step past the first element, and count the remaining elements
in the list
Add one to the result
To test if a value occurs in a list:



If the list is empty, return false; otherwise,
If the first thing in the list is the given value, return true;
otherwise
Step past the first element, and test whether the value occurs
in the remainder of the list
Example backtracking algorithm

To color a map with no more than four colors:

color(Country n):


If all countries have been colored (n > number of countries) return
success; otherwise,
For each color c of four colors,

If country n is not adjacent to a country that has been
colored c
Color country n with color c
 recursively color country n+1
 If successful, return success
If loop exits, return failure


Example greedy algorithm


Suppose you want to count out a certain amount of
money, using the fewest possible bills and coins
A greedy algorithm would do this would be:
At each step, take the largest possible bill or coin
that does not overshoot

Example: To make $6.39, you can choose:






a $5 bill
a $1 bill, to make $6
a 25¢ coin, to make $6.25
A 10¢ coin, to make $6.35
four 1¢ coins, to make $6.39
For US money, the greedy algorithm always gives
the optimum solution
Time and space

To analyze an algorithm means:



developing a formula for predicting how fast an
algorithm is, based on the size of the input (time
complexity), and/or
developing a formula for predicting how much memory
an algorithm requires, based on the size of the input
(space complexity)
Usually time is our biggest concern

Most algorithms require a fixed amount of space
y = x2 + 3x + 5, for x=1..20
The End