Treeviz

From HaskellWiki
Revision as of 14:13, 10 April 2014 by Dbanas (talk | contribs) (→‎ToDo: Brought "ToDo" list up-to-date.)
Jump to navigation Jump to search

A set of types, classes, and functions for visualizing computation decomposition trees.

Introduction

This library can assist you in visualizing how computation is broken down, or decomposed, by certain Divide-And-Conquer type algorithms. Such algorithms are often capable of significantly reducing the order of complexity of an operation, by taking advantage of recursions, which occur when the original input is broken into halves, thirds, etc. Such repeated recursive breakdown often produces tree structures from an initially linear data input. And being able to visualize how the elements of these trees are recombined, when the operation is evaluated, can help us make smarter choices about how to apply a particular type of massively parallel computational resource to the computational problem.

One specific example is provided, a fast Fourier transform (FFT). Here is typical output from that example:

(If you compile and run Main.hs, note that the two output files, tree.gv and legend.gv need to be post-processed, as follows, in order to generate the graphics shown, below.)

dot <filename_root>.gv -Tpng ><filename_root>.png

Logtree.png Legend.png

ToDo

  1. Split source into multiple files.
  2. Convert source to big boy Haskell, using Foldable, Traversable, etc.
  3. Add the ability to track and classify operations performed, including keeping track of "trivial" twiddles and phasors.
  4. Add more LogTree instances.
  5. Improve user documentation. ;-)