![Page 1: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/1.jpg)
The Fundamentals: Algorithms, Integers, & Matrices
Chapter 2
![Page 2: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/2.jpg)
2.2 Growth of Functions
![Page 3: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/3.jpg)
Big-O notation
A tool to analyze a program's efficiency.
An approximation of work an algorithm performs as a function of size of input
Work = O(input size)
![Page 4: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/4.jpg)
Work
A measure of effort expended by computer in performing a computation
![Page 5: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/5.jpg)
Commonly used Big-O values (orders of magnitude)
Big-O Name O(1) Constant time LowerO(log n) Logarithmic time O(n) Linear time O(n log n) O(n2) Quadratic time
O(n3) Cubic time O(nk) Polynomial time
O(2n) Exponential time HigherO(n!) Factorial time
![Page 6: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/6.jpg)
Table of Common Running Times
N Linear N Log N Quadratic Cubic
10 10 10.0 100 100020 20 26.0 400 800030 30 44.3 900 2700040 40 64.0 1600 6400050 50 84.9 2500 12500060 60 106.7 3600 21600070 70 129.2 4900 34300080 80 152.2 6100 48800090 90 175.9 8100 729000
100 100 200.0 10000 1000000
![Page 7: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/7.jpg)
Growth Rate of Some Functions
0100200300400500600700800900
1000
0 10 20 30 40 50 60 70 80 90 100
LinearnLognQuadraticCubic
![Page 8: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/8.jpg)
Big-O
f(x) is O(g(x))if there are constants C and k such that
| f(x) | C | g(x) |
whenever x > k
![Page 9: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/9.jpg)
Show f(x) = x2+2x+1 is O(x2)
Prove: |x2+2x+1| C | x2 |
• If we let k > 0, f(x) & g(x) are always positive, we can drop | |
Let C be the sum of f(x) coefficients x2+2x+1 1x2+2x2+1x2 = 4x2
» Note: x2 1x2 and 2x 2x2 and 11x2
» This inequality holds beginning at x=1: 44
Choosing k=1, C=4, x2+2x+1 is O(x2)
![Page 10: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/10.jpg)
Show f(x) = 7x3 is O(x2)
Prove: |7x3| C | x2 |
Assuming k > 0, divide both sides by x2
7x C
» You choose a constant > any y on y=7x line» No such C exists, since x is arbitrarily large» (Choose any C, and there is an x > C)
7x3 is not O(x2)
![Page 11: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/11.jpg)
Big-O Example algorithm
O(1) Assigning value to ith array element;
always the same number of steps
not necessarily short
a program which takes 320 steps,
reguardless of input values
O(log n) Binary search,
What power of 2 is greater than a input number?
A loop whose terminal value is being successively halved or doubled
![Page 12: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/12.jpg)
Big-O Example algorithm
O(n) Printing all elements of an array; searching an unordered array; A loop which executes 1 to N times (where N is the input size, the number of data values being
processed)
O(n log n) Faster sorts; A loop whose index is being halved/doubled inside a loop executing from 1 to N
![Page 13: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/13.jpg)
Big-O Example algorithm
O(n2) Slower sorts; A loop which executes from 1 to N times inside a loop executing from 1 to N
times
O(n3) Incrementing all the elements in a NxNxN array; A 1..N loop inside a 1..N loop inside a 1..N loop
O(nk) k levels of loops inside loops
![Page 14: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/14.jpg)
Big-O Example algorithm
O(2n) List all the subsets of a set with n elements; practical only with small values of n; n=64 takes 5 years on a supercomputer
O(n!) List all the possible arrangements of a set with n elements
![Page 15: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/15.jpg)
Big-O General Rules
a.) Multiplicative constants do not matter. O(3n) = O(n)
b.) Addition is done by taking the max. O(n2) + O(n) = O(max(n2, n)) = O(n2) O(n3) + O(log n) = O(max(n3, log n)) = O(n3)
c.) Multiplication remains multiplication. O(n) * O(log n) = O(n log n) O(n) * O(n2) = O(n3)
d.) Lower is always O(higher) for nbut closest is desired
f(n2) = O(n3)
![Page 16: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/16.jpg)
How can a program with many control structures be categorized by only one?
A certain country taxes pet stores based only on the combined weight of all the pets.
Only two pets thrive in the country: parakeets and elephants
When reporting their taxes, pet shop owners generally only report the weight of the _____.
![Page 17: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/17.jpg)
Example Complexities
4n3 + 20n + 30 = O(n3) n + 10000 = O(n) 4n4 + 20n + 30 = O(n4) 2n + n3 = O(2n) 200 = O(1)
![Page 18: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/18.jpg)
Running Time of Statements Simple statements are: O(1)
initialization of variables; input/ouput
Loops are: O(g(n)f(n)) where g(n) is upper bound on number of loop iterations & f(n) is upper bound on the body of the loop If g(n) and f(n) are constant,
then this is constant time
![Page 19: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/19.jpg)
Running Time of Statements (continued)
Conditional statements are
O(max(f(n),g(n))) where f(n) is upper bound on then part and g(n) is upper bound on else part
Blocks of statements with complexities:
f1(n), f2(n), ..,fk(n),
have complexity O(f1(n) + f2(n)+ ...+ fk(n))
![Page 20: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/20.jpg)
Simple Analysis
cin >> n; // 1if (n > 20) // 1
cout << “Number is > 20” << endl; // 2else
cout << “Number is <= 20” << endl; // 2
T(n) = 2 + max (2,2) = 4 = O(1)
![Page 21: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/21.jpg)
Example Analysis
cin >> n; // 1factorial = 1; // 1for (i = 2; i<=n; i++) // 1 initialization +1 test +
//(1 test + 1 inc) per iterationfactorial *= i; // 1
cout << factorial; // 1
T(n) = 5 + 3*n = O(n)
![Page 22: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/22.jpg)
Another example
cin >> n; // 1if (n > 0) { // 1 factorial = 1; // 1 for (i = 2; i <=n; i++) // 1 initialization +1 test +
//(1 test + 1 inc) per iterationfactorial *= i; // 1
cout << factorial; // 1}else cout << “Can’t do factorial of” << n; // 2
T(n) = 2 + max(4+3*n, 2) = O(n)
![Page 23: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/23.jpg)
Analysis of simple function callsint factorial(int n){ int fact=1,i; for (i = 2; i <=n; i++)
fact *= i; return fact;}
void main(){ int n; // 1
cin >> n; // 1 cout << factorial(n) << endl; //O(n)}
Main is O(n)
![Page 24: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/24.jpg)
Analysis of Nested Loops
EXAMPLE 1:
for (int i = 0; i < n; i++) // n*O(n) = O(n2) for (int j=0; j<n;j++) // n*O(1) = O(n) x++; // O(1)
EXAMPLE 2:
for (int i = 0; i < n; i++) for (int j=i; j<n;j++) x++; // O(1)
T(n) = n+(n-1) + (n-2)+…+ 1 = n(n+1)/2 = O(n2)
![Page 25: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/25.jpg)
Summing blocks of statements
for (int i = 0; i < n; i++) // O(n2) for (int j=0; j<n;j++) x++;
for (int i = 0; i < n; i++) // O(n) x++;
T(n) = O(n2) + O(n) = O(n2 + n) = O(n2)
![Page 26: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/26.jpg)
Loops with different limits
for (int i = 0; i < n; i++) // n*O(m) = O(mn) for (int j=0; j<m; j++) // m*O(1) = O(m) x++; // O(1)
O(mn)
![Page 27: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/27.jpg)
More complex loops
for (i = 1;i < n; i *=2) x++;
for (i=n; i > 0; i/=2) x++;
Repetitive halving or doubling results in logarithmic complexity. Both loops are O(log n)
![Page 28: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/28.jpg)
The Integers and Division
2.4
![Page 29: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/29.jpg)
Divides (|), Prime Number theory - the study of integers and their properties a | b (a divides b) - integer c where ac = b
3 | 12 since 12 = 3 * 4
Prime - an integer > 1 whose only factors are the number and 1 Composite - an integer > 1 that is not prime
Fundamental theorem of arithmetic Every positive int. can be written as a product of primes 100 = 2 * 2 * 5 * 5
If n is composite, it has a prime divisor n
![Page 30: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/30.jpg)
Divisibility Tests
A number is divisible by 2 if its unit’s digit is divisible by 2. A number is divisible by 3 if the sum of the digits is divisible by 3. A number is divisible by 4 if the # made of the last two digits is div by 4. A number is divisible by 5 if its unit’s digit is divisible by 5. A number is divisible by 6 if its is divisible by 2 and 3. A number is divisible by 8 if the # made of the last 3 digits is div by 8. A number is divisible by 9 if the sum of the digits is divisible by 9.
![Page 31: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/31.jpg)
The Division Algorithm
Given integer a and positive integer d. integers q,r with 0 rd, such that a = dq
+ r d is divisor, r remainder, q quotient, a dividend
quotient remainder divisor dividend
101 divided by 11 == quotient 9, remainder 2101 = 11* 9 + 2
-11 divided by 3 == quotient -4, remainder 1-11 = 3(-4) + 1
![Page 32: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/32.jpg)
Greatest Common Divisor gcd(a,b) = largest integer d, such that d | a and d | b
gcd(24,36) = 12
Algorithm for finding gcd(a,b) Express a, b as powers of products of primes The products of lowest powers of all distinct primes is gcd
(intersection)
gcd(252,420) 252 = 22 32 7 420 = 22 3 5 7 gcd(252,420) = 22 3 7
= 84
![Page 33: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/33.jpg)
Relatively Prime Two integers are relatively prime if their gcd is 1
17 and 22 are r.p. 6 and 22 are not r.p.
The integers a1, a2, …, an are pairwise relatively prime if
gcd(ai,aj) = 1, whenever 1 ijn 10, 17 and 21 are p.r.p. 10, 17 and 22 are not p.r.p. because gcd(10,22) = 2
![Page 34: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/34.jpg)
Least Common Multiple lcm(a,b) = smallest positive integer that is divisible by both a and b
Finding lcm(a,b) Express a, b as powers of products of primes The products of highest powers of all distinct primes is lcm (union)
lcm(252,420) 252 = 22 32 7 420 = 22 3 5 7 gcd(252,420) = 22 32 5 7
= 1260
NOTE: ab = gcd(a,b) lcm(a,b)
![Page 35: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/35.jpg)
Modular Arithmetic a mod m
the remainder when a is divided by m
17 mod 5 = 2
2001 mod 101 = 82 19 r 82
What about negative operands?-17 mod 5 The answer in C++ is –2 (-3 –2/5)
Text answer would be 3 (-4 + 3/5)
Mod 0 is not defined
![Page 36: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/36.jpg)
Congruence a b (mod m) a Is Congruent to b modulo m
a mod m = b mod mOR
m divides a-b
17 5 (mod 6) is true6 divides (17 - 5) 17 mod 6 = 5 5 mod 6 = 5
24 14 (mod 6) is false6 does not divide (24 - 14) 24 mod 6 = 0 14 mod 6 = 2
![Page 37: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/37.jpg)
Hashing
Applying a function to a key value mapping range of possible key values into a smaller range of addresses
h(k) = k mod m h(064212848) = 064212848 mod 111 = 14 h(037149212) = 037149212 mod 111 = 65
![Page 38: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/38.jpg)
Cryptology
The study of secret messages
Caesar cipher f (p) = (p + 3) mod 26
“MEET YOU IN THE PARK” becomes“PHHW BRX LQ WKH SDUN”
![Page 39: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/39.jpg)
Security Now Podcast
Leo LaPorte, twit.tv, leoville.com
Steve Gibson, grc.com
![Page 40: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/40.jpg)
Decoder Ring (SN-31)
![Page 41: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/41.jpg)
Basic Terminology• plaintext - the original message
• ciphertext - the coded message
• cipher - algorithm for transforming plaintext to ciphertext
• key - info used in cipher known only to sender/receiver
• encipher (encrypt) - converting plaintext to ciphertext
• decipher (decrypt) - recovering ciphertext from plaintext
• cryptography - study of encryption principles/methods
• cryptanalysis (codebreaking) - the study of principles/ methods of deciphering ciphertext without knowing key
• cryptology - the field of both cryptography and cryptanalysis
![Page 42: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/42.jpg)
Cryptology
The study of secret messages
Caesar cipher f (p) = (p + 3) mod 26
“MEET YOU IN THE PARK” becomes“PHHW BRX LQ WKH SDUN”
![Page 43: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/43.jpg)
English Letter Frequencies
![Page 44: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/44.jpg)
Letter Pair Frequencies
For instance, given a section of English language, E tends to be very common, while X is very rare. Likewise, ST, NG, TH, and QU are common pairs of letters (termed bigrams or digraphs), while NZ and QJ are rare. The mnemonics phrase "ETAOIN SHRDLU" encodes the 12 most frequent letters in typical English language text.
![Page 45: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/45.jpg)
EXCLUSIVE OR
The EXCLUSIVE OR is true when
exactly one of its operands is true.
p q p q
____________________
F F F
F T T
T F T
T T F
![Page 46: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/46.jpg)
Reversible XOR
1100 plaintext
1010 encrypt
-----
0110 ciphertext
1010 decrypt
-----
1100 plaintext
![Page 47: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/47.jpg)
Ch 7 / Foil 47
Random Numbers
Generating a sequence of random numbers is often useful In a game, it ensures that a player does not see
the same behavior each time In a simulation of a complex system,
random numbers can be used tohelp generate random events
– Car crash in a simulationof a highway system
– Likelihood of a gene in cell mutation– Weather simulation
![Page 48: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/48.jpg)
Ch 7 / Foil 48
Uniform Random Numbers
Uniform random number sequence A sequence of random numbers where
– Each value in the sequence is drawn from the same range of numbers
– In each position of the sequence, any value in the number range is equally likely to occur
![Page 49: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/49.jpg)
Ch 7 / Foil 49
Random Numbers
Examples Generate a uniform random
number sequence in the range1 to 6
– Use a fair six-sided dice– Each roll represents a new random number
Do two die produce uniform random numbers in the range 1 ... 12?
Generate a uniform random numbersequence in the range 1 to 2
– Use a fair coin Heads: 1, Tails: 2
![Page 50: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/50.jpg)
Ch 7 / Foil 50
Random Numbers
We can write an algorithmfor generating what lookslike random numbers
Because it’s an algorithm,we know the rules for generating the next number The generated numbers are not really random
– They are properly called pseudorandom numbers
30 21 9 28 29 ...
![Page 51: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/51.jpg)
Ch 7 / Foil 51
Stdlib Library
Provides in part an interface to functions that generate pseudorandom numbers rand() -- returns a uniform pseudorandom number (unsigned int)
from the inclusive interval 0 to RAND_MAX Consider rand.cpp
#include <iostream>#include <string>using namespace std;#include <stdlib.h>int main() { for (int i = 1; i <= 5; ++i)
cout << rand() << endl; return 0;
}
![Page 52: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/52.jpg)
Ch 7 / Foil 52
Different Sequences
To produce a different sequence, invoke
void srand(unsigned int); Consider seed.cpp
int main() { cout << "Enter a seed: "; unsigned int Seed; cin >> Seed; srand(Seed); for (int i = 1; i <= 5; ++i) cout << rand() << endl; return 0;
}
![Page 53: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/53.jpg)
Ch 7 / Foil 53
Different Sequences
To get a different sequence each time Need a method of setting the seed to a random value
– The standard method is to use the computer's clock as the value of the seed
– The function invocation time() can be used Returns an integral value of type time_t Invocation time(0) returns a suitable value for
generating a random sequence
![Page 54: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/54.jpg)
Ch 7 / Foil 54
Randseed.cpp
#include <iostream>#include <string>using namespace std;#include <stdlib.h>#include <time.h>
int main() { srand((unsigned int) time(0)); for (int i = 1; i <= 5; ++i)
cout << rand() << endl; return 0;
}
![Page 55: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/55.jpg)
Symmetric Key
Symmetric-key algorithms are a class of algorithms for cryptography that use trivially related, often identical, cryptographic keys for both decryption and encryption.
![Page 56: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/56.jpg)
Diffie-Hellman Key Exchange
We both agree on a public key a I raise ab for some large integer b You raise ac for integer c We exchange values You raise ab to the c power I raise ac to the b power We both have abc for our session key (RNG seed)
No one eavesdropping can perform log ab or log ac for large values of a, b, c
Security Now 34, 7:30mins-11:30
![Page 57: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/57.jpg)
RSA Encryption C = Me mod n
C = encrypted message M = plaintext message (converted to #s via ASCII) n is product of two primes pq e is exponent relatively prime to (p-1)(q-1) (public key)
The formula is invertible if p, q are known So, huge prime values are chosen for p,q (200 digits) n cannot be factored in a reasonable amount of time (2 billion years of computer time) Receiver of message is given decryption key: p & q
RSA Demo
![Page 58: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/58.jpg)
RSA Encryption The RSA algorithm, invented in 1977 by Ron Rivest, Adi Shamir, and Leonard
Adleman, is used frequently for public-key encryption and decryption. It works as follows: Take two large prime numbers, p and q, and find their
product n = pq; n is called the modulus. Choose a number, e, less than n and relatively prime to (p1)(q1), and find d, an inverse of e modulo (p1)(q1), which means that ed 1 mod (p1)(q1);
e and d are called the public and private exponents, respectively. The public key is the pair (n,e); the private key is d. The factors p and q must be kept secret, or destroyed. It is difficult (presumably) to obtain the private key d from the public key (n,e). If one could factor n into p and q (which can be difficult for large values of p and q) however, then one could obtain the private key d.
RSA Demo
![Page 59: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/59.jpg)
Matrices
2.6
![Page 60: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/60.jpg)
Matrix
A rectangular array of numbers
m n matrix m rows n columns
If m=n, the matrix is square Two matrices are equal if
they have same number of rows the same number of columns the corresponding entries in every position are equal
![Page 61: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/61.jpg)
A is an m n matrix
a a a
a a a
a a a
n
n
m m mn
11 12 1
21 22 2
1 2
..
..
.. .. .. ..
..
![Page 62: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/62.jpg)
aij
The element of matrix A on the ith row the jth column
A = [a ij] shorthand for denoting matrix A
![Page 63: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/63.jpg)
Sum of matrices
A + B = [aij + bij]
1 0 1
2 2 3
3 4 0
3 4 1
1 3 0
1 1 2
4 4 2
3 1 3
2 5 2
![Page 64: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/64.jpg)
Matrix Multiplication A is a m k matrix, B is a k n matrix
The product of A and B the sum of products of corresponding elements from ith row of A and jth column of B
AB = [cij]
cij = ai1b1j + ai2b2j + ai3b3j + … + aikbkj a bi x x j
x
k
1
![Page 65: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/65.jpg)
Multiplication Example
1 0 4
2 1 1
3 1 0
0 2 2
2 4
1 1
3 0
2 0 12 4 0 0
4 1 3 8 1 0
6 1 0 12 1 0
0 2 6 0 2 0
c11 c12
c41 c42
![Page 66: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/66.jpg)
Is Matrix Multiplication Commutative?
Does AB = BA? A B
1 1
2 1
2 1
1 1
AB
1 1
2 1
2 1
1 1
2 1 1 1
4 1 2 1
3 2
5 3
BA
2 1
1 1
1 1
2 1
2 2 2 1
1 2 1 1
4 3
3 2
![Page 67: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/67.jpg)
The Transpose of Matrix A
A is an m n matrix
AT is an n m matrix obtained by interchanging the rows and cols of A
AT = [bij], bij = aji
A AT
7 2 4
1 0 9
7 1
2 0
4 9
![Page 68: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/68.jpg)
Symmetric Matrix
A square matrix A is symmetic if A=AT
aij = aji for all i,j
1 1 0
1 0 1
0 1 1
a1,2
a2,1
![Page 69: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/69.jpg)
The Identity Matrix of Order n
An n n matrix main diagonal is all 1 every other element is 0
A In = ImA = A
I I2 3
1 0
0 1
1 0 0
0 1 0
0 0 1
![Page 70: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/70.jpg)
Powers for square matrices
Given A is an n n matrix
A0 = In
Ar = A A A A
r times
![Page 71: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/71.jpg)
Zero-One (Logical) Matrices
Elements are 0/1 representing False/True
The join of logical matrices A and B aij bij
The meet of logical matrices A and B aij bij
![Page 72: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/72.jpg)
Join and Meet of A and B
A B
1 0 1
0 1 0
0 1 0
1 1 0
A B A B v ^
1 1 1
1 1 0
0 0 0
0 1 0
![Page 73: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/73.jpg)
Boolean Product A is a m k logical matrix, B is a k n logical matrix
The boolean product of logical matrices A and B
A B = [cij]
cij = (ai1 b1j) (ai2 b2j) (ai3 b3j) … (aik bkj)
![Page 74: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/74.jpg)
Boolean Product Example
A B
1 0
0 1
1 0
1 1 0
0 1 1
A B
1 1 0
0 1 1
1 1 0
![Page 75: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/75.jpg)
Boolean Powers
Given A is an n n logical matrix
A[0] = In
A[r] = A A A A
r times
![Page 76: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/76.jpg)
Given A, find A2, A3
A[2] = A A
A[3] = A[2] A
A
0 0 1
1 0 0
1 1 0 0 0 1
1 0 0
1 1 0
0 0 1
1 0 0
1 1 0
1 1 0
0 0 1
1 0 1
o
1 1 0
0 0 1
1 0 1
0 0 1
1 0 0
1 1 0
1 0 1
1 1 0
1 1 1
o
![Page 77: The Fundamentals: Algorithms, Integers, & Matrices Chapter 2](https://reader033.vdocument.in/reader033/viewer/2022061518/56649ea35503460f94ba7cf6/html5/thumbnails/77.jpg)