Download presentation
Presentation is loading. Please wait.
Published byPhillip Sharp Modified over 6 years ago
1
CSE 504 Discrete Mathematics & Foundations of Computer Science
Dr. Djamel Bouchaffra Chapter 3 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices Integers & Algorithms (Section 3.6) © by Kenneth H. Rosen, Discrete Mathematics & its Applications, Sixth Edition, Mc Graw-Hill, 2007 Ch. 2 (Part 2) Section 2.5 & 2.7
2
Integers & Algorithms (3.6)
Introduction Algorithm is a set a procedures that handle arithmetic operations Use binary representations to enter the world of computer arithmetic Good illustration of the complexity of an algorithm Role of the Euclidean algorithm Base b expansion and modular exponentiation, important in cryptography CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
3
Integers & Algorithms (3.6) (cont.)
Representations of integers Theorem 1 Let b be a positive integer grater than 1. Then if n is a positive integer, it can be expressed uniquely in the form n = akbk + ak-1bk-1 +…+ a1b + a0, where k is a nonnegative integer, a0, a1, …,ak are nonnegative integers less than b, and ak 0. The representation of n given in theorem 1 is known as the base b expansion of n. CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
4
Integers & Algorithms (3.6) (cont.)
Example: What is the decimal expansion of the integer that has ( )2 as its binary expansion? Solution: ( )2 = 1*28 + 0*27 + 1*26 + 0*25 + 1* *23 + 1*22 + 1*21 + 1* = 351 CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
5
Integers & Algorithms (3.6) (cont.)
Hexadecimal expansions = base 16 expansion 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F The letters A through F represent the digits corresponding to the number 10 through 15. Example: What is the decimal expansion of the hexadecimal expansion of (2AE0B)16? Solution: (2AE0B)16 = 2* * * * *160 = (175627)10 Each hexadecimal digit can be represented using 4 bits. ( )2 = (E5) (E16 = (1110)2 ; 516 = (0101)2) Bytes: bit strings of length 8 represented by two hexadecimal digits. CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
6
Integers & Algorithms (3.6) (cont.)
Representations of integers (cont.) Base conversion Example: Find the base 8 (or octal) expansion of (12345)10 Solution: First, divide by = 8 * 1543 = 8 * = 8 * 24 = 8 * 3 +0 3 = 8 * (12345)10 = (30071)8 CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
7
Integers & Algorithms (3.6) (cont.)
Example: Find the hexadecimal expansion of ( )2 and the binary expansion of (A8D)16. Solution: Form blocks of 4 digits and add zeros at the start of the leftmost block if necessary. They are: 0011, 1110, 1011 and 1100. Convert each binary block into decimal (0011)2 = 316; (1110)2 = E16; (1011)2 = B16; (1100)2 = C16 Therefore, ( )2 = (3EBC)16. The conversion of (A8D)16 into binary notation requires replacing each hexadecimal digit by a block of 4 binary digits. They are: A16 = (1010)2, 816 = (1000)2, D16 = (1101)2 CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
8
Integers & Algorithms (3.6) (cont.)
Algorithms for integer operations Goal 1: Compute the sum of two integers expressed with their binary expansions. The complexity will be based on the number of bits used. a = (an-1an-2 … a1a0)2, b = (bn-1bn-2 … b1b0)2 a + b? (sum of two n-bits numbers) First: a0 + b0 = c0* 2 + s0 where s0 = rightmost bit in the binary expansion of a + b c0 = carry = 0 or 1. Second: a1 + b1 + c0 = c1* 2 + s1 where s1 = next bit of the sum expansion c1 = carry … a + b = (snsn-1sn-2 … s1s0)2 CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
9
Integers & Algorithms (3.6) (cont.)
Example: Add a = (1110)2 and b = (1011)2 Solution: a0 + b0 = = 0 * c0 = 0, s0 = 1 a1 + b1 + c0 = = 1 * c1 = 1, s1 = 0 a2 + b2 + c1 = = 1 * c2 = 1, s2 = 0 a3 + b3 + c2 = = 1 * c3 = 1, s3 = 1 s4 = c3 = 1 a + b = ( )2 1 = a = b 1 1 = c CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
10
Integers & Algorithms (3.6) (cont.)
Goal 2: Compute the product since b = bn-1bn-2…b1b0 then: ab = a (b020 + b121 + … + bn-12n-1) = a (b020) + a(b121) + … + a(bn-12n-1) Using this latter equation, we can compute a * b. abj = a if bj = 1 and 0 otherwise. Each time we multiply a term by 2, we shift its binary expansion one place to the left and add a zero at the tail end of the expansion. CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
11
Integers & Algorithms (3.6) (cont.)
Example: Find the product of a = (110)2 and b = (101)2 Solution: ab020 = (110)2 * 1 * 20 = (110)2 ab121 = (110)2 * 0 * 21 = (0000)2 (4 zeros-shift) ab222 = (110)2 * 1 * 22 = (11000)2 add 2-zero bits CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
12
Integers & Algorithms (3.6) (cont.)
To find the product, we need to perform: (110)2 + (0000)2 + (11000) ab = (11110)2 Other exercise: check for example: 7 * 5 = 35 is true in binary expansion. 1 CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
13
Integers & Algorithms (3.6) (cont.)
The Euclidean algorithm Goal: Compute the great common divisor (gcd) of two integers avoiding the prime factorization of each number which is time-consuming. CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
14
Integers & Algorithms (3.6) (cont.)
Illustration: Find gcd(91, 287) Divide 287 (the larger) by 91 (the smaller) 287 = 91 * Any divisor of 91 and 287 must be a divisor of 287 – 91 * 3 =14 (Theorem 1, part 1 & 2) Any divisor of 91 and 14 divides 287 = 91 * gcd(91,287) = gcd(91,14) Next divide 91 by 14 to obtain: 91 = 14 * Using the same reasoning, our next step is to: Divide 14 by 7: 14 = 7 * 2 since 7/14 gcd(14,7) = 7. But since gcd(287,91) = gcd(91,14) = gcd (14,7) = 7, we have solved the problem CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
15
Integers & Algorithms (3.6) (cont.)
Lemma 1: Let a = bq + r, where a, b, q and r are integers. Then we can write: gcd(a,b) = gcd(b,r) Example: Determine the gcd of 414 and 662 using the Euclidean algorithm. Solution: 662 = 414 * = 248 * 248 = 166 * = 82 * = 2 * 41 Therefore: gcd(414,662) = 2 (since 2 is the last nonzero remainder !) CSE 504, Chapter 2 (Part 3): The Fundamentals: Algorithms, the Integers & Matrices
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.