may 5, 2015applied discrete mathematics week 13: boolean algebra 1 dijkstra’s algorithm procedure...

33
May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices a = v 0 , v 1 , …, v n = z and positive weights w(v i , v j ), where w(v i , v j ) = if {v i , v j } is not an edge in G) for i := 1 to n L(v i ) := L(a) := 0 S := {the labels are now initialized so that the label of a is zero and all other labels are ,

Upload: julia-reed

Post on 27-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

1

Dijkstra’s Algorithm

procedure Dijkstra(G: weighted connected simple graph with vertices a = v0, v1, …, vn = z and positive weights w(vi, vj), where w(vi, vj) = if {vi, vj} is not an edge in G)

for i := 1 to nL(vi) :=

L(a) := 0S := {the labels are now initialized so that the label of

a is zero and all other labels are , and the distinguished set of vertices S is empty}

Page 2: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

2

Dijkstra’s Algorithm

while zSbegin

u := the vertex not in S with minimal L(u)S := S{u}for all vertices v not in S

if L(u) + w(u, v) < L(v) then L(v) := L(u) + w(u, v)

{this adds a vertex to S with minimal label and updates the labels of vertices not in S}

end {L(z) = length of shortest path from a to z}

Page 3: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

3

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 0

Page 4: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

4

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 1

4 (a)

2 (a)

Page 5: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

5

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 2

4 (a)

2 (a)

3 (a, c) 10 (a, c)

12 (a, c)

Page 6: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

6

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 3

4 (a)

2 (a)

3 (a, c) 10 (a, c)

12 (a, c)

8 (a, c, b)

Page 7: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

7

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 4

4 (a)

2 (a)

3 (a, c) 10 (a, c)

12 (a, c)

8 (a, c, b)

10 (a, c, b, d)

14 (a, c, b, d)

Page 8: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

8

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 5

4 (a)

2 (a)

3 (a, c) 10 (a, c)

12 (a, c)

8 (a, c, b)

10 (a, c, b, d)

14 (a, c, b, d)

13 (a, c, b, d, e)

Page 9: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

9

Dijkstra’s Algorithm

Example:

a

b d

z

ec

4

2

1

5

8

10

2

6

30

Step 6

4 (a)

2 (a)

3 (a, c) 10 (a, c)

12 (a, c)

8 (a, c, b)

10 (a, c, b, d)

14 (a, c, b, d)

13 (a, c, b, d, e)

Page 10: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

10

The Traveling Salesman ProblemThe traveling salesman problem is one of the classical problems in computer science.

A traveling salesman wants to visit a number of cities and then return to his starting point. Of course he wants to save time and energy, so he wants to determine the shortest path for his trip.

We can represent the cities and the distances between them by a weighted, complete, undirected graph.

The problem then is to find the circuit of minimum total weight that visits each vertex exactly once.

Page 11: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

11

The Traveling Salesman ProblemExample: What path would the traveling salesman take to visit the following cities?

Chicago

Toronto

New York

Boston

600

700

200

650 550700

Solution: The shortest path is Boston, New York, Chicago, Toronto, Boston (2,000 miles).

Page 12: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

12

The Traveling Salesman ProblemQuestion: Given n vertices, how many different cycles Cn can we form by connecting these vertices with edges?

Solution: We first choose a starting point. Then we have (n – 1) choices for the second vertex in the cycle, (n – 2) for the third one, and so on, so there are (n – 1)! choices for the whole cycle.

However, this number includes identical cycles that were constructed in opposite directions. Therefore, the actual number of different cycles Cn is (n – 1)!/2.

Page 13: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

13

The Traveling Salesman Problem

Unfortunately, no algorithm solving the traveling salesman problem with polynomial worst-case time complexity has been devised yet.

This means that for large numbers of vertices, solving the traveling salesman problem is impractical.

In these cases, we can use approximation algorithms that determine a path whose length may be slightly larger than the traveling salesman’s path, but can be computed with polynomial time complexity.

For example, artificial neural networks can do such an efficient approximation task.

Page 14: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

14

Let us talk about…

Trees

Page 15: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

15

Trees

Definition: A tree is a connected undirected graph with no simple circuits.

Since a tree cannot have a simple circuit, a tree cannot contain multiple edges or loops.

Therefore, any tree must be a simple graph.

Theorem: An undirected graph is a tree if and only if there is a unique simple path between any of its vertices.

Page 16: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

16

Trees

Example: Are the following graphs trees?

No.

Yes.

Yes.

No.

Page 17: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

17

TreesDefinition: An undirected graph that does not contain simple circuits and is not necessarily connected is called a forest.

In general, we use trees to represent hierarchical structures.

We often designate a particular vertex of a tree as the root. Since there is a unique path from the root to each vertex of the graph, we direct each edge away from the root.

Thus, a tree together with its root produces a directed graph called a rooted tree.

Page 18: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

18

Tree Terminology

If v is a vertex in a rooted tree other than the root, the parent of v is the unique vertex u such that there is a directed edge from u to v.

When u is the parent of v, v is called the child of u.

Vertices with the same parent are called siblings.

The ancestors of a vertex other than the root are the vertices in the path from the root to this vertex, excluding the vertex itself and including the root.

Page 19: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

19

Tree Terminology

The descendants of a vertex v are those vertices that have v as an ancestor.

A vertex of a tree is called a leaf if it has no children.

Vertices that have children are called internal vertices.

If a is a vertex in a tree, then the subtree with a as its root is the subgraph of the tree consisting of a and its descendants and all edges incident to these descendants.

Page 20: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

20

Tree Terminology

The level of a vertex v in a rooted tree is the length of the unique path from the root to this vertex.

The level of the root is defined to be zero.

The height of a rooted tree is the maximum of the levels of vertices.

Page 21: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

21

Trees

Example I: Family tree

James

Christine Bob

Frank Joyce Petra

Page 22: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

22

Trees

Example II: File system

/

usr temp

bin spool ls

bin

Page 23: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

23

Trees

Example III: Arithmetic expressions

+ -

y z x y

This tree represents the expression (y + z)(x - y).

Page 24: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

24

TreesDefinition: A rooted tree is called an m-ary tree if every internal vertex has no more than m children.

The tree is called a full m-ary tree if every internal vertex has exactly m children.

An m-ary tree with m = 2 is called a binary tree.

Theorem: A tree with n vertices has (n – 1) edges.

Theorem: A full m-ary tree with i internal vertices contains n = mi + 1 vertices.

Page 25: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

25

Binary Search TreesIf we want to perform a large number of searches in a particular list of items, it can be worthwhile to arrange these items in a binary search tree to facilitate the subsequent searches.

A binary search tree is a binary tree in which each child of a vertex is designated as a right or left child, and each vertex is labeled with a key, which is one of the items.

When we construct the tree, vertices are assigned keys so that the key of a vertex is both larger than the keys of all vertices in its left subtree and smaller than the keys of all vertices in its right subtree.

Page 26: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

26

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

Page 27: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

27

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer

Page 28: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

28

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer power

Page 29: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

29

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer power

north

Page 30: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

30

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer power

north zoo

Page 31: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

31

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer power

north zoodentist

Page 32: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

32

Binary Search TreesExample: Construct a binary search tree for the strings math, computer, power, north, zoo, dentist, book.

math

computer power

north zoodentistbook

Page 33: May 5, 2015Applied Discrete Mathematics Week 13: Boolean Algebra 1 Dijkstra’s Algorithm procedure Dijkstra(G: weighted connected simple graph with vertices

May 5, 2015 Applied Discrete Mathematics Week 13: Boolean Algebra

33

Binary Search Trees

To perform a search in such a tree for an item x, we can start at the root and compare its key to x. If x is less than the key, we proceed to the left child of the current vertex, and if x is greater than the key, we proceed to the right one.

This procedure is repeated until we either found the item we were looking for, or we cannot proceed any further.

In a balanced tree representing a list of n items, search can be performed with a maximum of log(n + 1) steps (compare with binary search).