2007. december 4.

Graphviz

Remélem nem untatom a közönséget egy kissé technikai jellegű posttal. Akinek nem szakmája, ne vegye magára.
Mostanában egy olyan programot írok, ami viszonylag bonyolult bináris fákat transzformál. A fák kezelhető méretűek (~ 50-60 csúcs), de nehéz szövegben igazán átláthatóan megjeleníteni a struktúrájukat. Kis keresgélés után rátaláltam a Graphviz-re. A Graphviz csomagot olyan szakemberek írták, akik elég alaposan utánanéztek ennek az információmegjelenítés témának. Sokkal több mindenre képes, mint amire én használom. Többek között jó:
  1. Típuslevezetések/Osztályhierarchiák megjelenítésére. Ezt használja például a doxygen is. Elég bonyolult ábrákat is képes előállítani.
  2. Véges autómaták megjelenítésére
  3. Adatbázis függőségek kirajzolására.
Nézzetek még meg egy pár példát, elég sok mindenre használható! De hogy is működik ez az egész? A graphviz több kis programból áll, és mindegyiknek van egy halálprimitív nyelve. Mivel én bináris fákat akartam megjeleníteni, ezért a dot programocskát használtam:
dot -Tsvg -o out.svg test2.dot
A kimenetet csak jpegben tudom megmutatni, mert a fostalicksa blogspot nem engedi feltölteni svg-ben, de a forrás alapján ti is létrehozhatjátok vektorgrafikusan.

Egész jól néz ki, még így jpegben is. Lássuk a forrást!

digraph G
{
node [shape = record];
node[ label =" | B | "];
node0[ label =" | L | "];
node0000000000000000000000000000001000000000[ label =" | H | "];
node0000000000000000000000000000000100000000[ label =" | H | "];
node1[ label =" | L | "];
node1111111111111111111111111111111100000000[ label =" | H | "];
"node":f0 -> "node0":f1;
"node":f2 -> "node1":f1;
"node0":f0 -> "node0000000000000000000000000000001000000000":f1;
"node0":f0 -> "node0000000000000000000000000000000100000000":f1;
"node1":f0 -> "node1111111111111111111111111111111100000000":f1;
}
Egyértelmű az élek és a csúcsok definiálása. B-vel jelöltem az elágazó csomópontokat, L-el a leveleket, és a H-val a levelekben tárolt mutatókat, de ezt máshogy is írhatnánk.
Remélem valaki tudja ezt egyszer használni. Nekem nagyon tetszett.
Neu




1 Comments:

At 05 december, 2007 17:50, Blogger Pecc said...

hasznos kis túl, még jól jöhet valamikor.

 

Megjegyzés küldése

<< Home