sobota, 8 listopada 2014

Pożyteczne narzędzia - graphviz

Przez przypadek właściwie, szukając jakiegoś przyjemnego rozwiązania na wypisywanie drzew BST znalazłem wzmiankę o pakiecie graphviz, który tworzy piękne obrazki z plików tekstowych zawierających ich opis w pewnym składniowo podobnym do C metajęzyku.

Narzędzie to może być bardzo użyteczne przy wizualizacji wszelkich grafów, workflow programów albo innych śmiesznych zastosowań, na które jeszcze nie wpadłem. Ogółem bardzo mi się podoba w zamyśle. Świetna rzecz do ilustracji tego jak działają struktury wskaźnikowe (listy czy jakieś tablice mieszające) więc może się przydać do prezentacji jako graficzny dodatek do tekstu złożonego w TeX'u.

Z czym to się je?

W Debianie wystarczy sobie wpisać:

#aptitude install graphviz

I wszystko powinno pięknie się zainstalować. Paczka składa się z wielu programów dla mnie na razie najważniejszy wydaje się dot służący do robienia grafów skierowanych (btw podoba mi się modularność tego pakietu, dzięki temu mamy ułatwione zadanie czytając manuala do tych mniejszych jego części).

 
 Z poniższego kodu, który umieścimy sobie w jakimś pliku np. graph.gv
digraph G{
       node [shape=record, height=.1]
       56->44;
       56->70;
       44->35;
       70->69;
       70->80;
       35->23;
}
Możemy po użyciu następującej komendy terminalowej :
$dot -Tgif graph.gv -o graph.gif
Stworzyć sobie taki oto obrazek z drzewem BST.



Oczywiście można tworzy daleko bardziej rozbudowane opisy, które będą powalać swoją dokładnością. W moim wypadku było jednak potrzebne proste wypisywanie drzewa, które zaszyłem sobie w programie w taki sposób, że po przetworzeniu przez dot'a dostaję fajną graficzną reprezentację.

Further reading:

http://www.graphviz.org/pdf/dotguide.pdf