Upload
antony-austin
View
232
Download
0
Embed Size (px)
DESCRIPTION
Brian Mitchell - Drexel University MCS680-FCS 3 Introduction Course Objective –To provide a solid background in the theoretical and mathematical aspects of Computer Science Provide essential background knowledge that is required for success in other core computer science graduate courses Textbook A.V.Aho, J.D.Ullman, Foundations of Computer Science, W.H. Freeman and Co., Additional References H.R. Lewis, C.H. Papadimitriou, Elements Of The Theory Of Computation, Prentice Hall, T.H. Cormen, C.E. Leiserson & R.L. Rivest, Introduction To Algorithms, McGraw Hill, 1996.
Citation preview
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
1
Brian Mitchellhttp://www.mcs.drexel.edu/~bmitchel
email: [email protected] University
Fall 1997
MCS680:Foundations Of
Computer Science
int MSTWeight(int graph[][], int size){
int i,j;int weight = 0;
for(i=0; i<size; i++)for(j=0; j<size; j++)
weight+= graph[i][j];
return weight;}
1
1
nn
O(1)
O(1)
O(n) O(n)
Running Time = 2O(1) + O(n2) = O(n2)
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
2
Introduction
• Instructor Brian Mitchell - “Brian”
[email protected]/~bmitchel (215)895-2668
• Course Information Foundations of Computer Science (FCS)
MCS 680 Section 510Wednesday 6:00 - 9:00 PMRoom Location: Curtis 250AOffice Hours By Appointment
• Online Information www.mcs.drexel.edu/~bmitchel/course/mcs680-fcs
Please check course web page several times per week. The web page will be my primary mechanism for communicating:
Special and Emergency Information Syllabus Assignments Solutions to Problems
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
3
Introduction
• Course Objective– To provide a solid background in the
theoretical and mathematical aspects of Computer Science
• Provide essential background knowledge that is required for success in other core computer science graduate courses
• Textbook A.V.Aho, J.D.Ullman, Foundations of
Computer Science, W.H. Freeman and Co., 1995.
• Additional References H.R. Lewis, C.H. Papadimitriou, Elements
Of The Theory Of Computation, Prentice Hall, 1981.
T.H. Cormen, C.E. Leiserson & R.L. Rivest, Introduction To Algorithms, McGraw Hill, 1996.
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
4
Introduction
• Homework, Exams Assignments & Programming Projects:
Homework sets consisting of 4-5 problems will be regularly assigned (consult web page). Based on difficulty, you will have 1-2 weeks to complete each assignment. Some assignments might require you to write a small program or a program fragment.
For this course you may develop programming solutions using the ‘C’, ‘C++’ or Java programming languages
Midterm: A 90 minute midterm exam will be given during the 5th or 6th week of the course.
Final: A 2 hour final exam will be given during our regularly scheduled class time on finals week.
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
5
Introduction
• Grading– The following distribution will be used to
determine your final grade in this course:• 50%: Homework & Programming Projects• 20%: Midterm Exam• 30%: Final Exam
• Policies– All homework and programming assignments
are individual efforts, unless specifically stated otherwise in the assignment definition.
• You may use your colleagues for advice, however, all assignments must be your original work
– Late assignments will be penalized 10% per week. Any assignment not submitted within 2 weeks of the deadline will not be accepted unless you work out special arrangements with me.
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
6
Introduction
• Tentative List Of Topics– Summation and Logarithm Review– Ineration, Induction & Recursion– Big-Oh Analysis – Running Time– Recurrence Relations– Trees (Mathematical Aspects & Algorithms)– Sets– Graph Theory & Graph Algorithms– Relations– Automata – Regular Expressions– Context Free Grammars– Propositional Logic– Predicate Logic
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
7
Summations
• Algorithms often contain an interative control construct– Loops (while, for, do…while)– Algorithm analysis can be performed by examining
the sum of the times spent on each execution of the loop
– Example: What is the value of i?
n
j=1
j = 1+2+…+(n-1)+n
int i;for (i=1; i<=n; i++){i += i;
}
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
8
Summations
• Properties of sums
aj = n
j=1aj
j=1
limn
If the limit does not exist, the sum diverges; otherwise, itconverges.
n
j=1caj + dbj =
n
j=1aj c + d bj
n
j=1
Summations obey the linearity property
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
9
Common Summations
n
j=1j =
n(n+1)2
n
j=0xj =
xn+1 - 1x-1
n
j=1aj - aj-1 = an - a0
n-1
j=0aj - aj+1 = a0 - an
n
j=1c = n • c
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
10
Summation Example
• Consider:int foo(int n){int i,j,k;for (i=1; i<=n; i++)for(j=1; j<=n; j++)
k += i + j;}
How much time is spent performing the addition operationsin the above code fragment if an add operation takes 2clock cycles on a Pentium 120Mhz microprocessor?
n
i=1
n
j=1
addOps = n • addOps
n
i=1
= n2 • addOps
On a 120Mhz microprocessor each clock cycle takes8.3333 ns. (10-9 seconds). Thus the total amount of timethe code fragement spends adding is:
= n2 • (2 • 8.3333E-9) = 16.667n2 ns.
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
11
Summation Example-Results
Execution Time For Addition Operations
0
0.0002
0.0004
0.0006
0.0008
0.001
0.0012
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
n
Exec
utio
n Ti
me
(sec
onds
)
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
12
Summation Example
int foo(int n){int i,j,k;for (i=1; i<=n; i++)for(j=1; j<=n; j++)
k += (i + j);}
What is the value of k?
)1(
))1((2
)1(2
2)1(
2)1(
2)1(
2
11 1
nn
nnnnnn
nnnnnn
nnnaaan
ii
n
i
n
jji
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
13
Summation Example
int foo(int n){int i,j,k;for (i=1; i<=n; i++)for(j=1; j<=i; j++)
k += (i + j);}
What is the value of k?
)1(2
)1(2
)1(2
)1(
2)1(
11 1
nnn
nnnnn
iiiaaan
ii
n
i
i
jji
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
14
Logarithms
• Logarithms appear often during the analysis of algorithms– General form: logb x
• b is the base of the logarithm• if b is not specified then 10 is assumed
– Definition: The logarithm to the base b of x represents the power to which b must be raised to produce x
– Examples: log2 8 = 3 (since 23 = 8)log3 81 = 4 (since 34 =
81) log10 1 = 0 (since 100 =
1)– During the analysis of algorithms, log2 x
appears often• We will use lg x to represent log2 x
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
15
Logarithms
• Notation– lg n = log2 n = (log n / log 2)
– ln n = loge n
• Identities– logb 1 = 0
– logbk n = (logb n)k
– logb logb n = logb (logb n)
– logb (a/c) = logb a - logb c
– logb n = (1/ logn b)
– logc n = (logarb n / logarb c) - c is any base
– logb (1/n) = - logb n
– logb nr = r logb n
– logb nj = logb n + logb j– a = blogb a
– alogb n = nlogb a
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
16
Logarithms
• Logarithmic algorithms grow slowly with respect to the amount of input data:– Bubble sort growth n2
– Quick sort growth n lg n
Comarision of Execution Complexity
0
50
100
150
200
250
300
350
1 3 5 7 9 11 13 15 17
Sample Size
Exec
utio
n C
ompl
exity
Sample Size (x)x^2x lg x
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
17
Data Models, Data Structures & Algorithms
• Data Models– Abstractions used to formulate problems– Any mathematical concept can be treated
as a data model• Values that the data objects can assume• Operations on the data
– Programming languages (‘C/C++’, Pascal, Java...) support primitive data models
• Integers, floating point, strings, chars, ...• Operations: +, -, /, *, %, <, >, <=, >=, == ...• However there are other important data
models– Sets, graphs, trees, expressions– These data models are mathematically
understood, however, most programming languages do not provide intrinsic support
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
18
Data Models, Data Structures & Algorithms
• Data Structures• Most programming languages do not
directly support important data models– Must represent the needed data model by
using abstractions that are supported by the language
• Data structures are methods for representing a data model in a programming language
• Consider the following weighted and directed graph:
A
B
C
D
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
19
Data Structures
A
B
C
D
This graph can be represented in a table:
ABCD
A0001
B4000
C3200
D0600
1
6
4
3
2
A table can be represented in a computer language as atwo-dimensional array:
int graph[4][4];...
graph[0][1] = 4;graph[0][2] = 3;graph[1][2] = 2;graph[1][3] = 6;graph[3][0] = 1;
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
20
Algorithms
• Precise an unambiguous specification of a sequence of steps that can be carried out automatically
• In Computer Science, algorithms are expressed using programming languages
• Consider an algorithm for calculating the total weight of a graph.– Our data structure is a two-dimensional graph
int GraphWeight(int graph[][], int size){int i,j,weight;
weight = 0;for(i=0; i<size; i++)for(j=0; j<size; j++)weight+= graph[i][j];
return weight;}
Brian Mitchell ([email protected]) - Drexel University MCS680-FCS
21
Running Times Of Algorithms
• Desire to analyze algorithm running time• Used to determine how “good” an
algorithm performs– Inputs of various sizes– Best Case– Worst Case– Average Case– Bounding Performance
• We use “Big-Oh” analysis to model running time (also known as execution complexity)– O(n)– O(n2)– O(2n)– O(n log n)– O(n lg n)