Treeviz

From HaskellWiki
Revision as of 13:22, 10 April 2014 by Dbanas (talk | contribs) (→‎ToDo)
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. Move code from explicit recursion to Foldable/Traversable based, instead.