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

Slides:



Advertisements
Similar presentations
Lecture 15. Graph Algorithms
Advertisements

Algorithms (and Datastructures) Lecture 3 MAS 714 part 2 Hartmut Klauck.
Great Theoretical Ideas in Computer Science
Ananth Grama, Anshul Gupta, George Karypis, and Vipin Kumar
Lecture 19: Parallel Algorithms
4/16/2015 MATH 224 – Discrete Mathematics Counting Basic counting techniques are important in many aspects of computer science. For example, consider the.
Lecture 3: Parallel Algorithm Design
Sorting Comparison-based algorithm review –You should know most of the algorithms –We will concentrate on their analyses –Special emphasis: Heapsort Lower.
Introduction to Bioinformatics Algorithms Divide & Conquer Algorithms.
Lecture 17 Path Algebra Matrix multiplication of adjacency matrices of directed graphs give important information about the graphs. Manipulating these.
Copyright © 2007 Pearson Addison-Wesley. All rights reserved. Problem Reduction Dr. M. Sakalli Marmara Unv, Levitin ’ s notes.
 2004 SDU Lecture11- All-pairs shortest paths. Dynamic programming Comparing to divide-and-conquer 1.Both partition the problem into sub-problems 2.Divide-and-conquer.
Dynamic Programming Dynamic Programming is a general algorithm design technique for solving problems defined by recurrences with overlapping subproblems.
Data Structures and Algorithms
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 21: Graphs.
1 Discrete Structures & Algorithms Graphs and Trees: II EECE 320.
1 Lecture 25: Parallel Algorithms II Topics: matrix, graph, and sort algorithms Tuesday presentations:  Each group: 10 minutes  Describe the problem,
CHAPTER 11 Sorting.
Chapter 11: Limitations of Algorithmic Power
Algorithms All pairs shortest path
Given UPC algorithm – Cyclic Distribution Simple algorithm does cyclic distribution This means that data is not local unless item weight is a multiple.
GRAPH Learning Outcomes Students should be able to:
Data Structures and Algorithms Graphs Minimum Spanning Tree PLSD210.
Chapter 9 – Graphs A graph G=(V,E) – vertices and edges
Chapter 2 Graph Algorithms.
Fall 2013 Instructor: Reza Entezari-Maleki Sharif University of Technology 1 Fundamentals of Programming Session 17 These.
Graph Algorithms. Definitions and Representation An undirected graph G is a pair (V,E), where V is a finite set of points called vertices and E is a finite.
Discrete Structures Lecture 12: Trees Ji Yanyan United International College Thanks to Professor Michael Hvidsten.
Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M
MA/CSSE 473 Day 28 Dynamic Programming Binomial Coefficients Warshall's algorithm Student questions?
1 Closures of Relations: Transitive Closure and Partitions Sections 8.4 and 8.5.
Data Structure Introduction.
CS 361 – Chapters 8-9 Sorting algorithms –Selection, insertion, bubble, “swap” –Merge, quick, stooge –Counting, bucket, radix How to select the n-th largest/smallest.
Comparison of Optimization Algorithms By Jonathan Lutu.
Graph Algorithms Ananth Grama, Anshul Gupta, George Karypis, and Vipin Kumar Adapted for 3030 To accompany the text ``Introduction to Parallel Computing'',
3.3 Complexity of Algorithms
Chapter 10 Graph Theory Eulerian Cycle and the property of graph theory 10.3 The important property of graph theory and its representation 10.4.
Graph Algorithms Gayathri R To accompany the text ``Introduction to Parallel Computing'', Addison Wesley, 2003.
Chapter 8 Maximum Flows: Additional Topics All-Pairs Minimum Value Cut Problem  Given an undirected network G, find minimum value cut for all.
1 Directed Graphs Chapter 8. 2 Objectives You will be able to: Say what a directed graph is. Describe two ways to represent a directed graph: Adjacency.
Graph Theory. undirected graph node: a, b, c, d, e, f edge: (a, b), (a, c), (b, c), (b, e), (c, d), (c, f), (d, e), (d, f), (e, f) subgraph.
Shell Sort. Invented by Donald Shell in 1959, the shell sort is the most efficient of the O(n²) class of sorting algorithms. Of course, the shell sort.
Chapter 20: Graphs. Objectives In this chapter, you will: – Learn about graphs – Become familiar with the basic terminology of graph theory – Discover.
Unit-8 Sorting Algorithms Prepared By:-H.M.PATEL.
Data Structures and Algorithm Analysis Graph Algorithms Lecturer: Jing Liu Homepage:
1 GRAPH Learning Outcomes Students should be able to: Explain basic terminology of a graph Identify Euler and Hamiltonian cycle Represent graphs using.
If A and B are both m × n matrices then the sum of A and B, denoted A + B, is a matrix obtained by adding corresponding elements of A and B. add these.
Section Recursion 2  Recursion – defining an object (or function, algorithm, etc.) in terms of itself.  Recursion can be used to define sequences.
Lecture 20. Graphs and network models 1. Recap Binary search tree is a special binary tree which is designed to make the search of elements or keys in.
Sorting and Runtime Complexity CS255. Sorting Different ways to sort: –Bubble –Exchange –Insertion –Merge –Quick –more…
All Pairs Shortest Path Algorithms Aditya Sehgal Amlan Bhattacharya.
All-pairs Shortest paths Transitive Closure
Lecture 3: Parallel Algorithm Design
Advanced Algorithms Analysis and Design
Computing Connected Components on Parallel Computers
Advanced Algorithms Analysis and Design
Dynamic Programming Dynamic Programming is a general algorithm design technique for solving problems defined by recurrences with overlapping subproblems.
Chapter 8 Dynamic Programming
Parallel Graph Algorithms
Lecture 22: Parallel Algorithms
Graphs Chapter 13.
Unit-2 Divide and Conquer
Data Structures Review Session
Chapter 8 Dynamic Programming
PASCAL’S TRIANGLE.
CS 584 Project Write up Poster session for final Due on day of final
Parallel Graph Algorithms
Closures of Relations Epp, section 10.1,10.2 CS 202.
Algorithm Course Algorithms Lecture 3 Sorting Algorithm-1
Data Structures and Algorithms
Presentation transcript:

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 Let’s 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 = 1×1! + 127×2! + 966×3! ×4! ×5! + 266×6! + 28×7! + 1×8! = 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 n’th 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 n’th 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