Group 5 Algorithms Presentation. Agenda Items and Presenters Bell Numbers All Pairs Shortest Path...

download Group 5 Algorithms Presentation. Agenda Items and Presenters Bell Numbers All Pairs Shortest Path Shell Sort and Radix Sort Psuedocode.

If you can't read please download the document

description

Bell Numbers In how many ways, counting ties, can 8 horses cross a finish line? A Use Case

Transcript of Group 5 Algorithms Presentation. Agenda Items and Presenters Bell Numbers All Pairs Shortest Path...

Group 5 Algorithms Presentation Agenda Items and Presenters Bell Numbers All Pairs Shortest Path Shell Sort and Radix Sort Psuedocode Bell Numbers In how many ways, counting ties, can 8 horses cross a finish line? A Use Case Bell Numbers Lets consider just four horses for now and develop a recurrence relation, a systematic way of counting the possible outcomes. In mathematics, a recurrence relation is an equation that recursively defines a sequence, one or more initial terms are given: each further term of the sequence is defined as a function of the preceding terms. Four horses may finish in one, two, three or four blocks. Define blocks A block in this case is a pattern of possible ways the horses can finish. If we have fours horses as follows Horse Racing Example Bell Numbers Alfred Bell Numbers Boxtrot Bell Numbers Yisele Bell Numbers Xray Bell Numbers Three block example: (Alpha) (Boxtrot) (Yisele, Xray) have finished separately. Yisele and Xray have tied. More Background Info Bell Numbers Three blocks (Alpha), (Beta), (Yisele, Xray) may be arranged in 3! = 6 ways. The arrangements for a block of three ways in which the horses can finish. Note: This does not take into account places (first, second, third, fourth). (Alpha) (Boxtrot) (Yisele, Xray), (Alpha) (Yisele) (Boxtrot, Xray), (Alpha) (Xray) (Boxtro, Yisele), (Boxtrot) (Yisele) (Alpha, Xray), (Boxtrot) (Xray) (Alpha, Yisele), (Yisele) (Xray) (Alpha, Beta) Blocks Bell Numbers Blocks, Partitions Arrangements and Outcomes The number of ways a set of n elements can be partitioned into m nonempty subsets S(n,m) is the Bell number. In this case 4 horses (elements) can be partitioned in 15 different ways. In this case we added it up manually but we can determine a formula and also a graphical way to calculate as follows. Bell Numbers Calculate Graphically The numbers can be constructed by using the Bell Triangle. Start with a row with the number one. Afterward each row begins with the last number of the previous row and continues to the right adding each number to the number above it to get the next number in the row.. Bell Numbers The Formula S(n+1) = S(n,m-1) + m * S(n,m) n = elements m = blocks B(5) = S(5,1) + S(5,2) + S(5,3) + S(5,4) + S(5,5) Answer to the Problem H8 = Where S(n,k) denotes the # ways n horses can cross in k blocks. H8 = 11! + 1272! + 9663! 4! 5! + 2666! + 287! + 18! = H8 denotes the number of ways 8 horses can cross the finish line. Bell Numbers Psuedocode Technical Information: Language:Objects: How do you represent a partitioning of a set of n elements? (This example is somewhat more challenging that the previous ones. Feel free to skim it, and go on.) The nth Bell number Bn is the number of ways of partitioning n (distinct) objects. One way of computing the Bell numbers is by using the following double recursive algorithm. This algorithm computes numbers with two arguments: B(i,j). The nth Bell number, Bn is computed as B(n,n). For example to find B3 compute B(3,3).1 B(1,1) = 1. B(n,1) = B(n-1,n-1) for n > 1. B(i,j) = B(i-1,j-1) + B(i,j-1) for n > 1 and 1 < j # i. All Pairs Shortest Path Given a weighted graph G(V,E,w), the all-pairs shortest paths problem is to find the shortest paths between all pairs of vertices vi, vj V. A number of algorithms are known for solving this problem. All Pairs Shortest Path Consider the multiplication of the weighted adjacency matrix with itself - except, in this case, we replace the multiplication operation in matrix multiplication by addition, and the addition operation by minimization. Notice that the product of weighted adjacency matrix with itself returns a matrix that contains shortest paths of length 2 between any pair of nodes. It follows from this argument that An contains all shortest paths. Transitive Closure : of R is the smallest transitive relation containing R. All Pairs Shortest Path RP1 R[i,j] = { 1 0 P k [i,j] = { 1 0 If there is a path of exactly K from i-> j All Pairs Shortest Path P2 P3 P4 P = P1 + P2+P3+P4 All Pairs Shortest Path An is computed by doubling powers - i.e., as A, A2, A4, A8, and so on. We need log n matrix multiplications, each taking time O(n3). The serial complexity of this procedure is O(n3log n). This algorithm is not optimal, since the best known algorithms have complexity O(n3). All Pairs Shortest Path Parallel Formulation Each of the log n matrix multiplications can be performed in parallel. We can use n3/log n processors to compute each matrix-matrix product in time log n. The entire process takes O(log2n) time. All Pairs Shortest Path Parallel Formulation def adj2(i,j): if adj(i,j) == 1: return 1 else: for k in range(0,n): # where n is the number of vertices in G if adj(i,k) == 1 and adj(k,j) == 1: return 1 return 0 Initial Segmenting Gap = Shell Sort Example 1 Resegmenting Gap = Shell Sort Example 2 Resegmenting Gap = 1 Shell Sort Example 3 Shell Sort Psuedocode Technical Information: Language: Programming Constructs: Efficiency: # Sort an array a[0...n-1]. gaps = [701, 301, 132, 57, 23, 10, 4, 1] foreach (gap in gaps) { # Do an insertion sort for each gap size. for (i = gap; i < n; i += 1) { temp = a[i] for (j = i; j >= gap and a[j - gap] > temp; j -= gap) { a[j] = a[j - gap] } a[j] = temp } Radix Sort For simplicity, say you want to use the decimal radix (=10) for sorting. Then you would start by separating the numbers by units and then putting them together again; next you would separate the numbers by tens and then put them together again; then by hundreds and so on until all the numbers are sorted. Each time you loop, just read the list from left to right. You can also imagine you are separating the numbers into buckets. Here is an illustration using Radix Sort 5, 213, 55, 21, 2334, 31, 20, 430 Separate by units: zeros: 20, 430 ones: 21, 31 twos: threes: 213 fours: 2334 fives: 5, 55 Back together: 20, 430, 21, 31, 213, 2334, 5, 55 To put them back together, first read the zeroes bucket, then the ones bucket, then so on, until you read the nines bucket. Radix Sort Separate by tens: zeros: 05 ones: 213 twos: 20, 21 threes: 430, 2334, fours: fives: 55 Back together: 5, 213, 20, 21, 430, 2334, 55 Radix Sort Separate by hundreds: zeros: 005, 020, 021, 055 ones: twos: 213 threes: 2334 fours: 430 fives: Back together: 5, 20, 21, 55, 213, 2334, 430 Radix Sort Separate by thousands: zeros: 0005, 0020, 0021, 0055,0213, 0430 ones: twos: 2334 threes: fours: fives: Back together: 5, 20, 21, 55, 213, 430, 2334 Thank You