Algorytm Dijxtry jest używany do obliczania najkrótszej drogi w grafach, ale żeby go samego przedstawiać za pomocą grafu...
No cóż, z drugiej strony, przedstawianie algorytmów jako grafy to ciekawa koncepcja: że mamy jakiś punkt programu i pewną ilość rozgałęzień / krawędzi z tego punktu, w których program może dalej iść.
Jeden z problemów ze studiowaniem nauk ścisłych przez niewidomych, to brak nawet prostych narzędzi, które mogłyby w tym pomóc, np. wygodnego edytora równań albo szerzej matematyki.
Drugi problem, to brak wiedzy o istniejących notacjach tekstowych (np. pSpice do opisywania tekstowo układów połączeń elektronicznych, albo verilog czy VHDL w tym samym celu).
No i trzeci, to możliwość konwersji tych notacji na wygodne interaktywne formy np. w najprostszej formie HTML, w bardziej zaawansowanej specjalizowany interaktywny program.
A to tylko wierzchołek góry lodowej.
Fajnie byłoby, gdyby niewidomy student miał łatwy dostęp do istniejących rozwiązań, więc nie musiałby wynajdywać koła na nowo, ale z drugiej strony, sednem informatyki i innych nauk ścisłych jest rozwiązywanie problemów, więc możemy to potraktować jako bonusowy dodatek do niewidzenia, że każde pokolenie na własną rękę te koła musi odkrywać.
Co do grafów, to istnieje tekstowy język Dot [1], właśnie do celu opisywania i renderowania grafów stworzony.
Są też narzędzia do rysowania grafów pracujące przy pomocy biblioteki GraphWiz, bazującej na tym języku, więc osoba adaptująca materiał mogłaby graf narysować w takim programie, upewnić się, że wygląda jak oryginał i wyeksportować do Dot.
Gdyby jeszcze istniało narzędzie, a może istnieje, konwertujące dot na html, gdzie każdy węzeł byłby nagłówkiem pod którym mamy listę linków do innych węzłów, z którym ten obecnie oglądany się łączy, no to nawet sensownie dałoby się to przeglądać.
Kawałki w dot, na podstawie przykładów z Wikipedii (link poniżej).
Graf nieskierowany:
graph graphname {
a -- b -- c;
b -- d;
}
Graf skierowany:
digraph graphname {
a -> b -> c;
b -> d;
}
Graf z atrybutami:
graph graphname {
// This attribute applies to the graph itself
size="1,1";
// The label attribute can be used to change the label of a node
a [label="Foo"];
// Here, the node shape is changed.
b [shape=box];
// These edges both have different line properties
a -- b -- c [color=blue];
b -- d [style=dotted];
// [style=invis] hides a node.
}
[1]
https://en.wikipedia.org/wiki/DOT_(graph_description_language)