Download ppt - Courses

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Array data structure wikipedia , lookup

Linked list wikipedia , lookup

Lattice model (finance) wikipedia , lookup

Quadtree wikipedia , lookup

Red–black tree wikipedia , lookup

Interval tree wikipedia , lookup

Binary tree wikipedia , lookup

B-tree wikipedia , lookup

Binary search tree wikipedia , lookup

Transcript
i206: Lecture 14:
Heaps, Graphs intro.
Marti Hearst
Spring 2012
1
Heap
• A specialized binary tree that satisfies
– Heap property
– Complete binary tree property
• Useful for implementing priority queue, heapsort algorithm
• The heap property:
– Each node’s key is larger than its childrens’ keys.
2
Heap Methods
• Insert
– Insert element as last node of the heap
– May need to perform up-heap bubbling to
restore heap-order property
• Remove
– Remove and return element at root node
– Move last node to root node
– May need to perform down-heap bubbling
to restore heap-order property
3
Heaps
Root
A heap is a
certain kind of
complete binary
tree.
When a complete
binary tree is built,
its first node must be
the root.
Slide copyright 1999 Addison Wesley Longman
4
Left child
of the
root
The second node is
always the left child
of the root.
Slide copyright 1999 Addison Wesley Longman
5
Right child
of the
root
The third node is
always the right child
of the root.
Slide copyright 1999 Addison Wesley Longman
6
The next nodes
always fill the next
level from left-to-right.
Slide copyright 1999 Addison Wesley Longman
7
The next nodes
always fill the next
level from left-to-right.
Slide copyright 1999 Addison Wesley Longman
8
Slide copyright 1999 Addison Wesley Longman
9
Slide copyright 1999 Addison Wesley Longman
10
Slide copyright 1999 Addison Wesley Longman
11
45
35
27
19
Slide copyright 1999 Addison Wesley Longman
23
21
22
4
Each node in a heap
contains a key that
can be compared to
other nodes' keys.
12
45
Largest node is
always on the
top.
35
27
19
Slide copyright 1999 Addison Wesley Longman
23
21
22
4
The "heap property"
requires that each
node's key is >= the
keys of its children
13
Adding a Node to a Heap
45
 Put the new node in the
next available spot.
 Move the new node
upward, swapping with its
parent until the new node
reaches an acceptable
location.
35
27
19
Slide copyright 1999 Addison Wesley Longman
23
21
22
4
42
14
45
35
42
19
Slide copyright 1999 Addison Wesley Longman
23
21
22
4
27
15
45
23
42
35
19
Slide copyright 1999 Addison Wesley Longman
21
22
4
27
16
45
 The parent has a key
that is >= new node, or
 The node reaches the
root.
 The process of moving
the new node upward
is called
reheapification
upward.
19
Slide copyright 1999 Addison Wesley Longman
42
35
23
21
22
4
27
17
Removing the Top of the Heap
45
 Move the last node onto
the root.
42
35
19
Slide copyright 1999 Addison Wesley Longman
23
21
22
4
27
18
27
42
35
23
21
22
4
19
Slide copyright 1999 Addison Wesley Longman
19
27
 Move the last node onto
the root.
 Push the out-of-place
node downward, swapping
with its larger child until
the new node reaches an
acceptable location.
42
35
23
21
22
4
19
Slide copyright 1999 Addison Wesley Longman
20
42
 Move the last node onto
the root.
 Push the out-of-place
node downward, swapping
with its larger child until
the new node reaches an
acceptable location.
23
27
35
21
22
4
19
Slide copyright 1999 Addison Wesley Longman
21
42
 Move the last node onto
the root.
 Push the out-of-place
node downward, swapping
with its larger child until
the new node reaches an
acceptable location.
35
27
23
21
22
4
19
Slide copyright 1999 Addison Wesley Longman
22
42
 The children all have
keys <= the out-ofplace node, or
 The node reaches the
leaf.
 The process of pushing
the new node
downward is called
19
reheapification
downward.
Slide copyright 1999 Addison Wesley Longman
35
27
23
21
22
4
23
Implementing a Heap
42
• Store the data from
the nodes in a
partially-filled array.
35
27
23
21
An array of data
Slide copyright 1999 Addison Wesley Longman
24
Data from the root
goes in the first
location of the array.
42
35
27
23
21
42
An array of data
Slide copyright 1999 Addison Wesley Longman
25
Data from the next
row goes in the next
two array locations.
42
35
27
42
35
23
21
23
An array of data
Slide copyright 1999 Addison Wesley Longman
26
Data from the next
row goes in the next
two array locations.
42
35
27
42
35
23
27
23
21
21
An array of data
Slide copyright 1999 Addison Wesley Longman
27
Data from the next
row goes in the next
two array locations.
42
35
27
42
35
23
27
23
21
21
An array of data
Slide copyright 1999 Addison Wesley Longman
28
• The links between the tree's
nodes are not actually stored as
pointers, or in any other way.
• The only way we "know" that "the
array is a tree" is from the way
we manipulate the data.
42
35
27
42
35
23
27
23
21
21
An array of data
Slide copyright 1999 Addison Wesley Longman
29
If you know the index of a node,
then it is easy to figure out the
indexes of that node's parent and
children.
if i = location of current node:
location of left(i) = 2i + 1
location of right(i) = 2i + 2
42
35
27
42
35
23
27
21
[0]
[1]
[2]
[3]
[4]
23
21
30
If you know the index of a node,
then it is easy to figure out the
indexes of that node's parent and
children.
if i = location of current node:
location of left(i) = 2i + 1
location of right(i) = 2i + 2
31
Heap Running Times
• What is the running time of each operation?
• Insert
O(log n)
• Remove
O(log n)
32
Note: Heap is NOT sorted
42
• It satisfies the heap
property, but does
not fully sort the
keys.
• Heap property?
35
27
23
21
33
Heapsort
Given input items:
Build a heap from the input items
sortedlist = []
While the heap is not empty:
• Remove the largest item (the root), and place it at
the end of sortedlist
• Re-heapify the heap
Return sortedlist.
34
Heapsort
• Running time is O(n log n)
• Almost as fast as quicksort, but doesn’t have as
bad a worst case running time
– Quicksort worst case is O(n^2)
– Heapsort can be done in place in one array of length n.
• Also competes with merge sort
– Heapsort faster, but merge sort easier to parallelize
John Chuang
35
Outline
• What is a data structure
• Basic building blocks: arrays and linked lists
• Data structures (uses, methods,
performance):
–
–
–
–
List, stack, queue
Dictionary
Tree
Graph
36
Internet Graphs
Source: Cheswick and Burch
37
Social Network Graphs
American Journal of Sociology, Vol. 100, No. 1. "Chains of affection: The structure of
adolescent romantic and sexual networks," Bearman PS, Moody J, Stovel K.
38
Graph
• A graph consists of a set of nodes (vertices) and a set of
links (edges) that establish relationships (connections)
between the nodes
• Represented/stored using adjacency list or adjacency
matrix data structures
– Adjacency list for Graph 1: {a,b}, {a,c}, {b,c}
– Adjacency matrix for Graph 2:
• Edges can be directed/undirected
• Edges can have weights
• Tree is a special case of graph
39
Graph Algorithms
• Search/traversal: breadth-first or depth-first - O(|V|+|E|)
• Routing: shortest path between two points
(Dijkstra’s algorithm) -- O(|V|2+|E|)
• Minimum spanning tree -- O(|E|)
• Maximum Flow -- O(|V|3), O(|V|2|E|),
O(|V||E|2)
40
41