Friday, November 22, 2019
Algorithm design as it relates to time complexity problems like Research Paper
Algorithm design as it relates to time complexity problems like reducing fractions without using the euclidean algorithm for GCD - Research Paper Example The main difference of Algorithms both circuit implementation, testing and results expected. Modern processors that perform calculations need Algorithm design for present and future programmers. The paper also explains some key terms as used in the text in relation to computer design. It covers the need to maintain optimal code for future programmers due to complexity of testing circuits. Key words: Euclidââ¬â¢s Algorithm, Steinââ¬â¢s Algorithm, Built-In-Self-Test and Linear Feedback Shift Register. Algorithm Design Review of steps involved in solving time complexity problems 1. Euclidean algorithm Euclidean algorithm is an ancient efficient method used in computing the greatest common divisor (GCD) of two integers. The simplest Euclidââ¬â¢s algorithm starts with two positive integers. This then form a new pair that consists of the smaller number and the difference between the smaller and larger numbers. The process repeats until the numbers are equal. The resultant number t hen is the greatest common divisor of the original two integers. Euclid algorithm is described as GCD(a, 0) = a GCD(a, b) = GCD(b, a mod b) If and b>0, then GCD(a, a) = a GCD(a, b) = GCD(a - b, b) ; if b < a GCD(a, b) = GCD(a, b - a) ; if a < b For example, GCD(20, 0) is 20. Similarly, GCD(20, 10) is same as GCD((20-10), 10) = GCD(10, 10) = 10. 2. Steinââ¬â¢s Algorithm This algorithm is also a binary GCD algorithm. It computes the greatest common divisor of two nonnegative integers (Purdy, 1983). It is more efficient over the ancient Euclidean algorithm because it replaces multiplication and divisions with shifts, which are cheaper when operating on the binary representation used by modern computers. This is critical on embedded platforms available that do not have direct processor support for calculations of division. Steinââ¬â¢s algorithm is described as GCD(0, v) = v GCD(u, 0) = u GCD(0, 0) = 0 When v and u are even, then GCD(u, v) = 2.GCD(u/2, v/2) For an even u and an odd v, then GCD(u, v) = GCD(u/2 v) Similarly, if v is even and u is odd, then GCD(u, v) = GCD(u, v/2) In case, v and u are both odd, and if u ? v, then GCD(u, v) = GCD((u ââ¬â v)/2, v) In case, both are odd, and u < v, then GCD(u, v) = GCD((v ââ¬â u)/2, u) When initially solving a problem, how might one detect that a solution needs extra attention with respect to an efficient algorithm vs standard solutions where a highly efficient solution may be indistinguishable from an inefficient one? Identification of a problem is the first step towards solving a given mathematical equation. It involves examining for complexity to be able to simplify before any other complex operations take place. Time requirements spell complexity and attention are hence worth considering. Built-In Self Test (BIST) Modern computers have a built in IC for testing. This technique integrates the functionality of an automated test system within a chip. It is a Design where testing is accomplished by the help of built in hardware features. BIST has test controller, response verification and test generator. Test generator is responsible for generating test address sequence that compares the output from memory with the expected correct data. The BIST controller can be either hardwired logic, microcode controller or based on processor (Rekha Devi, 2011). Specifically discuss the potential tradeoff between an easy to understand inefficient solution vs a difficult to follow efficient solution. By employing Linear Feedback Shift
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.