recursive An algorithm that solves a problem by reducing it to an instance of the same problem with smaller input. The principle of mathematical induction: the statement n P(n), is true if P(1) is true and k (P(k) → P(k + 1)) is true. Basis step: the proof of P(1) in a proof by mathematical induction of n P(n). Inductive step: the proof of P(k) → P(k + 1) for all positive integers k in a proof by mathematical induction of n P(n). Strong induction: the statement n P(n) is true if P(1) is true and k [(P(1) ∧ P(2) ∧∙∙∙ ∧ P(k)) → P(k + 1) ]. Well-ordering property: every nonempty set of nonnegative integers has a least element. Generalized induction is used to prove results about sets other than the integers that have the well-ordering property. Recursive definition of a function: a definition of a function that specifies an initial set of values and a rule for obtaining values of this function at integers from its values at smaller integers. Recursive definition of a set: a definition of a set that specifies an initial set of elements and a rule for obtaining other elements from those in the set. Structural induction: a technique for proving results about recursively defined sets. Recursive algorithm: an algorithm that proceeds by reducing a problem to the same problem with smaller input. Merge sort: a sorting algorithm that sorts a list by splitting it in two, sorting each of the two resulting lists, and merging the results into a sorted list. Iteration: a procedure based on the repeated use of operations in a loop. –a ≡ b (mod m) is a relation on the set of integers. –In a mod m = b, the notation mod denotes a function. A positive integer p greater than 1 is called prime if the only positive factors of p are 1 and p. A positive integer that is greater than 1 and is not prime is called composite. The largest integer d such that d | a and also d | b is called the greatest common divisor of a and b. The greatest common divisor of a and b is denoted by gcd(a, b) The least common multiple of the positive integers a and b is the smallest positive integer that is divisible by both a and b. It is denoted by lcm(a,b). The Euclidian algorithm is an efficient method for computing the greatest common divisor of two integers The Caesar cipher is one of a family of ciphers called shift ciphers —The process of recovering plaintext from ciphertext without knowledge both of the encryption method and the key is known as cryptanalysis or breaking codes. —Cryptographic protocols are exchanges of messages carried out by two or more parties to achieve a particular security goal. Key exchange is a protocol by which two parties can exchange a secret key over an insecure channel without having any past shared secret information. •Mathematical Induction •Strong Induction •Well-Ordering •Recursive Definitions •Structural Induction •Recursive Algorithms •Well-ordering property: Every nonempty set of nonnegative integers has a least element. An algorithm is a finite set of precise instructions for performing a computation or for solving a problem. The general searching problem is to locate an element x in the list of distinct elements a1,a2,...,an, or determine that it is not in the list. —To sort the elements of a list is to put them in increasing order (numerical order, alphabetic, and so on). —Optimization problems can often be solved using a greedy algorithm, which makes the “best” choice at each step. Making the “best choice” at each step does not necessarily produce an optimal solution to the overall problem, but in many instances, it does. •Tractable Problem: There exists a polynomial time algorithm to solve this problem. These problems are said to belong to the Class P. •Intractable Problem: There does not exist a polynomial time algorithm to solve this problem •Unsolvable Problem : No algorithm exists to solve this problem, e.g., halting problem. •Class NP: Solution can be checked in polynomial time. But no polynomial time algorithm has been found for finding a solution to problems in this class. •NP Complete Class: If you find a polynomial time algorithm for one member of the class, it can be used to solve all the problems in the class.