28
CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008 Oliver Kullmann Department of Computer Science Swansea University Swansea, SA2 8PP, UK e-mail: [email protected] http://cs.swan.ac.uk/~csoliver November 23, 2008 Lecture held on Wednesday, October 1, 2008, in the Wallace Building, Room 218, from 12:00 - 13:00. I Organisation III Overview on the module II Literature IV Algorithms and Concepts CS 232 c OK 2008

CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

CS 232 Algorithms and

Complexity

Week 1, Wednesday, 1/10/2008

Oliver Kullmann

Department of Computer ScienceSwansea University

Swansea, SA2 8PP, UK

e-mail: [email protected]://cs.swan.ac.uk/~csoliver

November 23, 2008

Lecture held on Wednesday, October 1, 2008, inthe Wallace Building, Room 218, from 12:00 - 13:00.

I OrganisationIII Overview on the moduleII Literature

IV Algorithms and Concepts

CS 232 c©OK 2008

Page 2: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

I Course home page

On the course home page

http://cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/index.html

you find always the up-to-date versions of the slides(which serve also as the script). You will find alsothere all relevant news regarding the module, and hintsfor further study, so please visit it regularly.

Different ways to access it:

• directly via the above address;

• go to the computer science home page http://www.swan.ac.uk/compsci/, and follow the links“People” and “Academic Staff”;

• Type in “Oliver Kullmann” into google, find myhome page and click on the link to information onmodules I teach (near the top of the page).

CS 232 c©OK 2008 1

Page 3: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Assessment

Approximately

at the end of week 5 and week 9 there will becourse works,

each having a weight of 10%,while the examination counts 80%.

The course work shall help you to ensure that youdon’t fall behind.

CS 232 c©OK 2008 2

Page 4: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

In the lecture

At the beginning of the lecture the script is handedout. Corrected versions of the script are available onthe course home page (but won’t be printed out again,except of cases of substantial changes).

Left-over print-outs of the script are found in thestudent’s office, to be picked up by those who couldn’tcome to the lecture (hopefully due to good reasons(!)).

The script handed out in the lecture is there toaccommodate making notes, but the final, “official”version of the script is available at the course homepage.

You also have to sign the module attendance form.

CS 232 c©OK 2008 3

Page 5: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

After the lecture

• At the end of each lecture (script) you find asummary in order to facilitate the learning process.

• Furthermore there are easy questions (withanswers), which you should be able to solve.

Revise each lecture!

CS 232 c©OK 2008 4

Page 6: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

The support lecture

• optional

• depends on your questions

• no additional exercises

• at the beginning we run quickly through the easyexercises and their solutions you find at the end ofeach lecture script

• if there are no further questions we finish after that.

Also used for

1. two lectures discussing solutions for the courseworks

2. one lecture preparing the exam.

CS 232 c©OK 2008 5

Page 7: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

II What you will learn here

There are three main topics:

1. Graphs and graph algorithms:

a fundamental (data) structure and its use

2. Cryptography:

the science of encrypting data

3. Complexity theory:

the science of studying which resources arereally needed for computations.

A pervasive topic is that of algorithms for tacklinghard problems.

We will not discuss implementations in detail, butabstract data types (ADT’s) and data structures areimportant to us.

CS 232 c©OK 2008 6

Page 8: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Graphs

A graph consists of

• vertices (alternatively “nodes”) and

• edges connecting the vertices.

We consider

• undirected graphs (simply called “graphs”), and

• directed graphs (also called “digraphs” for short).

In addition we will also consider general graphsand general directed graphs, where (self-)loops andparallel edges are possible.

On the next three slides, you will see the samedirected graph with 30 vertices and 40 edges, createdas a “random graph” via the graph editor yEd, usingdifferent drawing methods.

CS 232 c©OK 2008 7

Page 9: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Example: Random layout

CS 232 c©OK 2008 8

Page 10: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Example: Organic layout

CS 232 c©OK 2008 9

Page 11: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Example: hierarchic layout

CS 232 c©OK 2008 10

Page 12: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Graph algorithms

We are considering algorithms related to questionabout

reachability How to search through a graph? Can Ireach a node from another node? If yes, what is theshortest way? ...

colouring How can we assign colours to vertices ofa graph such that connected vertices get differentcolours?

isomorphism When are two graphs to be considered“essentially the same” (ignoring names of verticesand edges)?

CS 232 c©OK 2008 11

Page 13: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Zero knowledge proofs and cryptography

Applying some hard problem from graph theory(the graph colouring problem), we consider

Zero Knowledge Proofs,

where you prove something (for example, your identity)without enabling a listener to the conversation toimitate you (steal your identity).

We consider public key cryptography, and we willgo to the encryption and decryption process of RSAin detail.

To do so, we will need some elementary algorithmsfrom number theory and algebra:

1. the Euclidean algorithm

2. fast exponentiation

3. Euler’s phi function.

CS 232 c©OK 2008 12

Page 14: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Notions of complexity theory

Instead of algorithms, now we consider theunderlying problems, and we ask:

Are there better algorithms than those we know?!

We are mainly concerned here with the notions of

efficiently decidable problems which can be“completely solved” in an “efficient manner”;

efficiently verifiable problems for which at least,given an alleged solution, we can “efficiently” decidewhether it is a correct solution or not.

For solving problems (like in graph theory), wewant efficient algorithms, while for cryptography wedo not want certain efficient algorithms to exist!

CS 232 c©OK 2008 13

Page 15: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Algorithms to tackle hard problems

We are considering the “NP-complete” problem ofdeciding whether a

propositional formula(build from boolean variables by means of

“and”, “or” and “not”)

is satisfiable.

For example a ∧ (a → b) ∧ ¬b is unsatisfiable, while(a → b) ∧ (b → a) is satisfiable.

This is a hard problem (in general). We will seeseveral basic techniques (among others also applyingwhat we learned from graph theory).

We will also discuss algorithms for other hardproblems like the graph colouring problem and graphisomorphism problem.

CS 232 c©OK 2008 14

Page 16: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

III Literature

Algorithms in Pseudo-Code:

• Foundations of Algorithms Using C++ Pseudocode,Richard E. Neapolitan and Kumarss Naimipour,Jones and Bartlett Publishers, 2004, Third Edition.Main recommended text.

• Introduction to Algorithms, Thomas H. Cormen,Charles E. Leiserson, Ronald L. Rivest and CliffordStein, MIT Press, 2001, Second Edition. Quitecomprehensive, and covers 2/3 of the course.

• Introduction to The Design and Analysis ofAlgorithms, Anany Levitin, Addison-Wesley, 2003.An interesting book, especially due to its chapter“Coping with the Limitations of Algorithm Power”.

• Algorithm Design, Jon Kleinberg and Eva TardosAlgorithm Design, Addison-Wesley, 2005. Verygood explanations; contains interesting chapters onNP and PSPACE.

CS 232 c©OK 2008 15

Page 17: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

1. These books focus mostly on the ideas of thealgorithms, and on their analysis.

2. Implementing the algorithms (efficiently, andaccording to modern software standards) is yetanother issue, and discussed in the following books.

CS 232 c©OK 2008 16

Page 18: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Literature on algorithms, supporting

specific programming languages

• Algorithms in C / C++ / Java, Robert Sedgewick,Addison-Wesley (use always the latest edition!).

Yet there are two volumes, the first contains parts1 - 4, and focuses on fundamentals and searchingand sorting, while the second volume contains part5 and is about graph algorithms, which is especiallyrelevant for this module. These books are wellwritten. C++ is the arguable the most appropriatelanguage for implementing algorithms and libraries.

• Data Structures and Algorithms in C++ / Java,Michael T. Goodrich, Roberto Tamassia and DavidMount, John Wiley & Sons, Inc.

Especially the graphical visualisations of algorithmsare nice; the C++ used is not really up-to-date (butthis in fact holds for most books in the area).

CS 232 c©OK 2008 17

Page 19: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Literature on complexity and

cryptography

• Algorithmics: The Spirit of Computing, DavidHarel (with Yishai Feldman), Addison-Wesley, (atleast) third edition.

This book covers a very broad range, fromalgorithms to complexity and cryptography tocomputability and software engineering. Nice toobtain an overview. Be aware that the first editionappeared 1987, and consequently the nowadays veryimportant practical applications in NP (and beyond)are not on the horizon (and also in other respectsthe book is somewhat misleading regarding practicalapplications).

• Cryptography: A very short introduction, FredPiper and Sean Murphy, Oxford University Press.

An introduction into practical cryptography (withcertain weaknesses).

CS 232 c©OK 2008 18

Page 20: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

A good overview on cryptography:

• Applied Cryptography: Protocols, Algorithms, andSource Code in C, Bruce Schneier, John Wiley andSons.

More advanced literature to obtain a deeperunderstanding of complexity theory and cryptography:

• Complexity Theory and Cryptology: An Introductionto Cryptocomplexity, Jorg Rothe, Springer.

• Complexity and Cryptography: An Introduction,John Talbot and Dominic Welsh, CambridgeUniversity Press.

• Complexity Theory: Exploring the Limits ofEfficient Algorithms, Ingo Wegener, Springer.

CS 232 c©OK 2008 19

Page 21: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

How to work/learn

Use books!

Use additional sources!

A very good exercise is to implement the algorithmsdiscussed in this module:

• Of course, this means a lot more work, becausethe ADT’s (Abstract Data Types) and the concreteData Structures have to be developed.

• So it is very helpful using the literature with supportfor programming.

Don’t fall behind!

CS 232 c©OK 2008 20

Page 22: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

IV Algorithms

Consider a computer program. It uses manyalgorithms.

An algorithm solves a specific (general!) problem,where a “problem” is a precisely defined map from aset of inputs to a set of outputs.

Thus an algorithm is the underlying abstraction forimplementations of a Pascal (or C/C++) function

funct ion f (m, n : i n teger ) : i n teger ;

(here the input consists of two integers, and the outputis one integer), where

• we do not consider any side effects (like input oroutput);

• where our set of basic operations is not restrictedto Pascal (or C++) operations, but depends on oursetting.

CS 232 c©OK 2008 21

Page 23: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

The theory of algorithms

The theory of algorithms gives (some) answers tothe following question:

• Given a problem, how can I solve it (i.e., how tofind an algorithm)?

• Given a solution to the problem (that is, analgorithm), how much resources are needed, wherethe main resources are

– time (number of steps)– space (size of memory)

but also other measures are important.

• Given the problem, what are the best solution (i.e.,algorithms) for it?!

CS 232 c©OK 2008 22

Page 24: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Concepts and models

When implementing algorithms, we want to beas close as possible to the abstract formulation ofthe algorithm given by the pseudo-code, while atthe same time we need to go into much greaterdetails. Generic programming supports implementingalgorithms at a high level of generality, withoutsacrifice efficiency. (Object orientation is a specialtechnique within the field of generic programming,more concerned with certain data types associated forexample with graphical user interfaces, but less suitedfor algorithms.)

The basis of generic programming is given by thenotion of a concept, which defines in a general wayfor example for what kind of inputs a graph traversalprocedure can be used. A concept consists of:

Syntax “how can we use something”

Semantics “what is actually achieved”

Complexity “what are the costs of performing anoperation”.

CS 232 c©OK 2008 23

Page 25: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

As you should know:

Data structures realise Abstract Data Types(ADT’s).

Now

“Concepts” enhance Abstract Data Types,

while the realisations of concepts are called models.

For example, a concept of a graph must tell us howto access the vertices and edges in a graph, how thedifferent operations play together, and how much timeand memory it takes to perform these operations.

A generic graph traversal algorithm for examplethen takes as input a “generic graph”, that is, someobjects to which we can apply the general operationsgiven by the concept of a graph, and in this waywe can guarantee that our algorithm will work for anyimplementation (model) of the graph concept (withoutany need to tie your graph into some artificial classhierarchy), and furthermore, based on the complexityguarantee given by the concept, we can also givegeneral complexity guarantees for the graph traversal.

CS 232 c©OK 2008 24

Page 26: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Summary

Notions to keep (and move) in your mind:

• Graph theory:

– graphs (directed and undirected)– general graphs (and simple graphs)– vertices and edges– parallel edges and loops– graph drawings

• Cryptography

– zero knowledge proofs– public key cryptography and RSA

• Complexity theory

– problems and algorithms– efficiently decidable– efficiently verifiable– P and NP

• Propositional logic; the satisfiability problem (SAT)

• Concepts and models; ADT’s.

CS 232 c©OK 2008 25

Page 27: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Easy exercises

1. What are the main ingrediences of “graphs”?

2. What are the two main types of graphs?

3. What is the difference between a graph and a graphdrawing?

4. What is the fundamental task of computationalcomplexity theory?

5. What is the core “NP-complete problem”?

6. What is an “algorithm”?

7. What does the theory of algorithms give us?

8. What are the main ingrediences of “concepts”?

CS 232 c©OK 2008 26

Page 28: CS 232 Algorithms and Complexity Week 1, Wednesday, 1/10/2008cs-svr1.swan.ac.uk/~csoliver/AlgorithmsComplexity200809/... · 2008. 11. 23. · language for implementing algorithms

Algorithms and Complexity Michaelmas Term 2008/09, Teaching Block One, Week 1

Solutions1. “Vertices” and “edges”.

2. Undirected and directed graphs.

3. A graph specifies abstract relations between verticesand edges, while a graph drawing adds a very specificway of presenting it.

4. Given a concrete (but general) problem, whatresources are needed to solve it (in general).

5. The “satisfiability problem”, deciding whether apropositional formula is satisfiable.

6. An “algorithm” is a general but specific solution fora general problem (not to be mixed up with a specificproblem instance). Algorithms are still abstract,while implementations use a specific programminglanguage and fix all the missing details.

7. Techniques for how to find algorithms, andtechniques on determining the resource usage ofalgorithms.

8. Syntax (usage), semantics (meaning), complexity(usefulness).

CS 232 c©OK 2008 27