lecture 13 jianjun hu department of computer science and engineering university of south carolina...

22
Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Upload: philomena-tate

Post on 04-Jan-2016

212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Lecture 13

Jianjun Hu

Department of Computer Science and Engineering

University of South Carolina

2009.10.

CSCE350 Algorithms and Data Structure

Page 2: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Problem 3

Design a decrease-by-one algorithm for generating power set of a set of n elements.

{a, b, c}

{} {a} {b} {c} {ab} {ac} {bc} {a b c}

==={a,b}

{} {a} {b} {ab}

==={a, b, c}

{c} {ac} {bc} {abc} -----< added when solving {a, b, c}

Page 3: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Depth-first search (DFS)

Explore graph always moving away from last visited vertex, similar to preorder tree traversals

Pseudocode for Depth-first-search of graph G=(V,E)

)(

0 withmarked is

ajacent toin vertexeach

withmark;1

)(

/////////////////////////////////////////////////////

)(

0 withmarked is

in vertexeach

0

unvisited as label0within vertex eachmark

)(

wdfs

w

vVw

countvcountcount

vdfs

vdfs

v

Vv

count

V

GDFS

if

do for

if

do for

//

ALGORITHM

Page 4: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Example – Undirected Graph

c f

ea

bd

g h

ij

a

c

d f

b

e

g

h

i

j

10,76,1

9,85,2

8,94,41,3

7,103,5

2,6

ga

hc

ifd

jb

e

Stack push/pop

DFS forest

(Tree edge / Back edge)

Input Graph

(Adjacency matrix / linked list

Page 5: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Example – Directed Graph (Digraph)

DFS forest may also contain forward edges: edges to descendants (digraphs only) and cross edges (all the edges that are not tree/back/forward edges)

a b

e f

c d

g h

Page 6: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

DFS Forest and Stack

a c

h

g

e

f

b d

8,76,1

7,85,64,2

3,41,3

2,5

ca

deb

gf

h

Stack push/pop

Page 7: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

DFS: Notes

DFS can be implemented with graphs represented as:• Adjacency matrices: Θ(V2)• Adjacency linked lists: Θ(V+E)

Yields two distinct ordering of vertices:• preorder: as vertices are first encountered (pushed onto stack)• postorder: as vertices become dead-ends (popped off stack)

Applications:• checking connectivity, finding connected components• checking acyclicity• searching state-space of problems for solution (AI)

Page 8: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Breadth-First Search (BFS)

Explore graph moving across to all the neighbors of last visited vertex

Similar to level-by-level tree traversals

Instead of a stack (LIFO), breadth-first uses queue (FIFO)

Applications: same as DFS

Page 9: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

BFS algorithm

bfs(v)count ← count + 1mark v with countinitialize queue with vwhile queue is not empty do

a ← front of queuefor each vertex w adjacent to a do

if w is marked with 0 count ←count + 1mark w with countadd w to the end of the queue

remove a from the front of the queue

BFSBFS((GG))countcount ← ← 00mark each vertex with 0mark each vertex with 0for for each vertexeach vertex vv inin VV do do if if vv is marked with 0 is marked with 0 bfsbfs((vv))

Page 10: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

BFS Example – undirected graph

c f

ea

bd

g h

ij

a

dc e

f b

g

h

i

j

10

9

8

7

6

5

4

3

2

1

i

j

h

g

b

f

e

d

c

a

Input Graph

(Adjacency matrix / linked list

BFS forest

(Tree edge / Cross edge)

Queue

Page 11: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Example – Directed Graph

a b

e f

c d

g h

BFS traversal:

Page 12: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

BFS Forest and Queue

a c

h

g

e fb d

8

7

6

5

4

3

2

1

d

c

h

g

f

e

b

a

Queue

BFS forest

Page 13: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Breadth-first search: Notes

BFS has same efficiency as DFS and can be implemented with graphs represented as:

• Adjacency matrices: Θ(V2)• Adjacency linked lists: Θ(V+E)

Yields single ordering of vertices (order added/deleted from queue is the same)

Page 14: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Directed Acyclic Graph (DAG)

A directed graph with no cycles

Arise in modeling many problems, eg:• prerequisite structure• food chains

A digraph is a DAG if its DFS forest has no back edge.

Imply partial ordering on the domain

Page 15: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Example:

a b

c

d

e

(a)

a

b

c

d

e

(b)

Page 16: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Topological Sorting

Problem: find a total order consistent with a partial order

Example:

Five courses has the prerequisite relation shown in the left. Find the right order to take all of them sequentially

Note: problem is solvable iff graph is dag

C1

C2 C5

C4

C3

Page 17: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Topological Sorting Algorithms

DFS-based algorithm:• DFS traversal: note the order with which the vertices are

popped off stack (dead end)• Reverse order solves topological sorting• Back edges encountered?→ NOT a DAG!

Source removal algorithm• Repeatedly identify and remove a source vertex, ie, a

vertex that has no incoming edges

Both Θ(V+E) using adjacency linked lists

Page 18: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

An Example

C51

C42

C33

C14 C25

The popping-off order:

C5, C4, C3, C1, C2The topologically sorted list:

C2 C1 C3 C5C4

(a) (b) (c)

C1

C2 C5

C4

C3

delete C1 delete C2

delete C3 delete C4 delete C5

C1

C2 C5

C4

C3

C2 C5

C4

C3

C5

C4

C3

C5

C4

C5

Page 19: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Variable-Size-Decrease: Binary Search Trees

Arrange keys in a binary tree with the binary search tree property:

k

<k >k

Example 1:Example 1: 5, 10, 3, 1, 7, 12, 9

Example 2:Example 2: 4, 5, 7, 2, 1, 3, 6

a0

a1

an-2

an-1

. . .

(a)

an-1

an-2

a 1

a 0

...

(b)

Page 20: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Searching and insertion in binary search trees

Searching – straightforward

Insertion – search for key, insert at leaf where search terminated

All operations: worst case # key comparisons = h + 1

lg n ≤ h ≤ n – 1 with average (random files) 1.41 lg n

Thus all operations have:• worst case: Θ(n) • average case: Θ(lgn)

Bonus: inorder traversal produces sorted list (treesort)

Page 21: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Finding Kth smallest number

1) Sort and check

2) Smarter algorithm using idea from Quick sort

p

A[i] ≤ p A[i] p

sIf s<K, then we search right halfOtherwise, we search left half

Page 22: Lecture 13 Jianjun Hu Department of Computer Science and Engineering University of South Carolina 2009.10. CSCE350 Algorithms and Data Structure

Next Class

Balanced trees (Transform-and-Conquer)