C
Parallel algorithm to solve a Hamiltonian Path problem variation (Travelling Baseball Fan) (Bradley Kuszmaul)
The included source code implements a variation of the Hamiltonian Path problem, called the Travelling Baseball Fan Problem, as described in the included problem description text file. The included write-up gives an overview of Cilk++ and some of the tools available for Cilk programming. The serial algorithm is a recursive search of all paths. To this basic algorithm, two heuristics have been added to reduce search time: remaining-degree and remaining-city.
Introduction to Programming Languages (ASU)
Textbook for introduction to programming languages with a hands-on approach. It teaches C, C++, Scheme, and Prolog in detail and with exercises, programming environments, and lab assignments.
Parallel algorithm to 3-D Convex Hull Problem (Bradley Kuszmaul)
The included code and white paper provides a parallel solution for the 3-D Convex Hull problem, as described in the included problem description text file. Parallelism is achieved using Cilk++. Possible points for the convex hull are found by repeatedly selecting four points from the input set and finding the largest volumes of the formed tetrahedrons (using matrix determinants). An O(n^4) algorithm confirms those points that are actually on the convex hull from the possible points previously found.
Parallel algorithm to Bounded Knapsack Problem (matteocilk.com)
The included code and solution write-up provides a parallel solution for the bounded knapsack problem, as described in the included problem description text file. The included write-up gives an overview of a branch-and-bound technique (as opposed to a dynamic programming algorithm) to enumerate possible solutions. The three heuristics that are implemented in the code (linear-programming relaxation, minimum-weight heuristic, and dominator heuristic) are described. The algorithm is parallelized using Cilk++ in order to launch recursive search tasks.
