chapter 8 abstract data types and subprograms. what is computer science? one more definition of...
TRANSCRIPT
What is Computer Science?
• One More Definition of Computer Science:
“Computer Science is the Automation of Abstractions” – anonymous
9-2
Chapter Goals
• What is an Abstract Data Type?
• Concept of “The Separation of Interface from Implementation”
• array-based implementation • linked implementation
4
More Chapter Goals
Some Specific Common Abstract Data Types• arrays and lists• stacks and queues• binary trees and binary search trees• Graphs
Common Algorithms that Operate on these ADT’s• Tree Searches• Traveling Salesman Problem, etc
5
Abstract Data Types
Abstract data type A composite data type containing:•Data in a particular organization•Operations (algorithms) to operate on that data
Remember the most powerful tool for managing complexity?
6
Abstract Data Types
Abstract data type The goals are to:1)Reduce complexity thru abstraction2)Organize our data into various kinds of containers3)Think about our problem in terms of data and the operations (algorithms) that are done to them
7
Stacks
Stack An abstract data type in which accesses are made at only one end
– LIFO, which stands for Last In First Out
– The insert is called Push and the delete is called Pop
11
Name some everydaystructures that are stacks
12
Stacks
WHILE (more data)
Read value
Push(myStack, value)
WHILE (NOT IsEmpty(myStack))
Pop(myStack, value)
Write value
Hand simulate this algorithm
QueuesQueue An abstract data type in which items are entered at one end and removed from the other end
– FIFO, for “First In First Out”
•EnQue: Get in line at rear
•Deque: Get served at front
14
Queues
WHILE (more data)
Read value
Enque(myQueue, value)
WHILE (NOT IsEmpty(myQueue))
Deque(myQueue, value)
Write value
Hand simulate this algorithm
Implementation: What’s Inside?
There are several ways to implement any ADT
2 Common implementations use:1)An Array2)Linked Nodes
Here, we are concerned with the details inside the ADT
(Building the car instead of Driving the car)
17
ADT Implementations
Array-based implementationItems are in an array, physically next to each other in memory
Linked-based implementationItems are not next to each other in memory, instead each item points to the next item
18
Did you ever play treasure hunt, a game in which each clue
told you where to go to get the next clue?
Algorithm for Playing Solitaire
21
WHILE (deck not empty)
Pop the deckStack
Check for Aces
While (There are playStacks to check)
If(can place card)
Push card onto playStack
Else
push card onto usedStack
Does implementation matter at this point?
22
“Logical Level”
The algorithm that uses the list does not need to
know how it is implemented
We have written algorithms using a stack, a
queue, and a list without ever knowing the
internal workings of the operations on these
containers
Trees
24
Root node
Node with two children
Node with right child
Leaf node
Node with left childWhat is the unique path to the node containing
5? 9? 7? …
Why Trees?
• Some real-world data is tree-like– Geneology Family trees– Management Hierarchies– File Systems (Folders etc)
• Treeses are easy to search
25
Binary Search Trees
Binary search treeEach “sub-tree” has the following property(s):
1.All sub-trees on one side are greater2.All sub-tress on the other side are smaller
26
Binary Search Tree
27Figure 8.7 A binary search tree
Each nodeis the root
of a subtreemade up ofits left and
right children
Prove that thistree is a BST
Recursive Binary Search Algorithm
30
Boolean BinSearch(node, item) If (node is null)
item does not existElse
If (item < node)BinSearch(node.leftchild, item)
Else BinSearch(node.rightchild, item)
33
Building Binary Search Tree
Insert(tree, item)
IF (tree is null)
Put item in tree
ELSE
IF (item < info(tree))
Insert (left(tree), item)
ELSE
Insert (right(tree), item)
Graphs
Graph A set of nodes and a set of edges that relate the nodes to each otherUndirected graph Edges have no directionDirected graph (Digraph) Each edge has a direction (arrowhead)Weighted GraphEdges have values
35
Common Graph Algorithms
39
•Traveling salesman problemFinding the cheapest or shortest path through several cities
•Internet data routing algorithms•Family tree software•Neural Nets (An Artificial Intelligence technique)
Graph Algorithms
A Depth-First Searching Algorithm--Given a starting vertex and an ending vertex, we can develop an algorithm that finds a path from startVertex to endVertex
This is called a depth-first search because we start at a given vertex and go to the deepest branch and exploring as far down one path before taking alternative choices at earlier branches
40
Depth First Search(startVertex, endVertex)Set found to FALSEPush(myStack, startVertex)WHILE (NOT IsEmpty(myStack) AND NOT found)
Pop(myStack, tempVertex)IF (tempVertex equals endVertex)
Write endVertexSet found to TRUE
ELSE IF (tempVertex not visited)Write tempVertexPush all unvisited vertexes adjacent with tempVertexMark tempVertex as visited
IF (found)Write "Path has been printed"
ELSEWrite "Path does not exist")
41
Breadth-First Search
What if we want to answer the question of how to get from City X to City Y with the fewest number of airline stops? A Breadth-First Search answers this question A Breadth-First Search examines all of the vertices adjacent with startVertex before looking at those adjacent with those adjacent to these verticesA Breadth-First Search uses a queue, not a stack, to answer this above question Why??
44
Breadth First Search(startVertex, endVertex)
Set found to FALSE
Enque(myQueue, startVertex)
WHILE (NOT IsEmpty(myQueue) AND NOT found)
Deque(myQueue, tempVertex)
IF (tempVertex equals endVertex)
Write endVertex
Set found to TRUE
ELSE IF (tempVertex not visited)
Write tempVertex
Enque all unvisited vertexes adjacent with tempVertex
Mark tempVertex as visited
IF (found)
Write "Path has been printed"
ELSE
Write "Path does not exist"
How can I get from Austin to Washington in the fewest number of stops?
Figure 8.13 Using a queue to store the routes
46