Spheres, Distances, Maps and More!

Spheres, Distances, Maps and More!

Mike
In this article we combine some Linear Algebra with a bit of geometry to make some real-world calculations about finding the nearest line to two or more points on a map. We’ve also implemented a tool that uses those calculations to fit a great circle to two or more points on the globe. Check it out!
Even Permutations and Some Simple Non-Abelian Groups

Even Permutations and Some Simple Non-Abelian Groups

Mike
In this entry we prove that A_n is simple when n >= 5. We then use this result to prove that there is no generalization of “even” and “odd” permutation to three or more classes – i.e. there is no class of homomorphisms into Z_n, where n > 2.
Parallel Sorting in Theory and in Practice III

Parallel Sorting in Theory and in Practice III

Mike
As promised, the last of a three-part series of entries on sorting in parallel. Here we present a parallel implementation of merge_sort which runs in O(nlog_2(n)) time and achieves fairly good parallelism.
Parallel Sorting in Theory and in Practice II

Parallel Sorting in Theory and in Practice II

Mike
As promised, this is the second entry on parallel sorting. In this entry, we’ll implement merge_sort, and then give two different ways to make it run in parallel. The first one will be a bit simpler than the second one.
Parallel Sorting in Theory and in Practice I

Parallel Sorting in Theory and in Practice I

Mike
We’re going to begin our discussion of parallel algorithms. We’ll do this by giving a parallel version of quick_sort_plus. We finish this entry by extending the “Almost the Master Theorem” to include cases where f(n) = cn^alpha*log_2(n). In our next entry, we’ll introduce merge_sort as well as a couple different parallel versions of it. We’ll also discuss both the theoretical and practical runtimes for these functions.
Finding the Median and an Application to Sorting

Finding the Median and an Application to Sorting

Mike
In the previous few entries we’ve been discussing quick_sort and analyzing the run-time complexity of recursive algorithms. We’re going to apply what we’ve learned so far to finding the median of an array in O(n) time. Then we’re going to see how that can be added to quick_sort to guarantee that it finishes in O(nlog_2(n)) time.
More on Sorting and Analyzing Run Time Complexity

More on Sorting and Analyzing Run Time Complexity

Mike
In the previous entry (Sorting, Random Permutations, and little bit of Probability), we introduced quick_sort, gave a version of it in C++ and started to analyze how many steps it takes to sort a vector of floating point numbers. In this entry, we continue that analysis and prove some results that will help us get a feel for other recursive algorithms.