# &rocs;i käsiraamat

## Sissejuhatus

&rocs; on graafiteooria arenduskeskkond kõigile, keda huvitab graafialgoritmide loomine ja analüüs. See hõlmab muu hulgas

- õppejõude, kes soovivad demonstreerida algoritme oma õpilastele,

- õppureid, kes soovivad mõista ja näha algoritmide tööd,

- kõiki, kes peavad mis tahes põhjusel looma graafialgoritme ja vajavad tööriista prototüüpide testimiseks.

Kõigile neile pakub &rocs; hõlpsasti pruugitava graafiredaktori, millega graafe luua, võimsa QTScripti mootori algoritmide täitmiseks ja mitu abitööriista graafide ja andmestruktuuride loomiseks enda katsete tarbeks. Tavaliselt käib asi nii, et kõigepealt kirjutatakse algoritm, siis luuakse graaf ja siis uuritakse reaalajas, kuidas algoritm graafi peal toimib.

&rocs;i pilt. &rocs;i pilt.

## &rocs;i kasutajaliides

### Kasutajaliidese põhielemendid

Kasutajaliides jaguneb mitmeks loogiliseks osaks, nagu on näha ka juuresoleval pildil.

&rocs;i liidese graafilised elemendid. &rocs;i liidese graafilised elemendid.

Visuaalse graafiredaktori riba

- Graafi loomiseks või muutmiseks visuaalses graafiredaktoris tuleb siin kõigepealt valida tööriist

Visuaalne graafiredaktor

- Siin saab graafid joonistada. Paremklõps tühjal alal, graafi elementidel või valitud graafi elementidel avab kontekstimenüü, mis mõnevõrra erineb sõltuvalt sellest, kus klõpsati.

Graafi omadused

- Siin näeb kõigi parajasti visuaalse graafiredaktori lõuendil olevate graafide loendit. Siin saab teha ka muudatusi näiteks graafi nimes, nähtavates omadustes, näiteks tippude nimedes või väärtustes, samuti määrata graafi elementide vaikimisi värve.

Skriptiredaktor

- Selles tekstiredaktoris saab kirjutada algoritme QtScriptis (antud juhul on see põhimõtteliselt samane JavaScriptiga). Korraga võib tegutseda ka mitme algoritmi kallal, avades või luues menüü abil uusi skriptikaarte. Kui skripti tehtud muudatused on salvestamata, näeb kaardi sakil väikest ketast.

Silumis- ja skriptiväljund

- Selles tekstialas näeb kas sinu skripti silumisteavet või väljundit sõltuvalt väljundi valikust. Kui skript tekitab vigu, valitakse automaatselt silumisväljund. Silumisväljund näitab samuti kõiki programmi väljundteateid.

Skripti töölepanek

- See ala tegeleb skriptide töölepanekuga. Parajasti avatud skripti saab rakendada visuaalse graafiredaktori lõuendil olevale graafile, kui klõpsata nupule Käivita. Skripti käivitamise järel saab selle täitmist ka peatada, kui klõpsata nupule Peata.

### Tööriistaribad

Siin on mitmesugused visuaalse graafiredaktori tööriistaribad, mis võimaldavad vajalikke võimalusi kasutada üheainsa klõpsuga. Vaikimisi näeb järgmisi tööriistaribasid:

- Peamine tööriistariba

- Joondusriba

#### Peamine tööriistariba

Peamine tööriistariba koosneb järgmistest toimingutest. Toimingule klõpsamine tähendab seda, et saad hiirega rakendada antud toimingu visuaalse graafiredaktori lõuendis:

- Liiguta: elementide valimiseks klõpsa lõuendi tühjal alal, hoia hiirenupp all ja joonista ristkülik, mis sisaldab mõningaid tippe ja/või seoseid, mis sel juhul valitakse, või klõpsa vahetult valimata elemendi peal selle valimiseks. Kui klõpsad valitud elemendil või elementidel, saab hiirenuppu all hoides ja hiirt liigutades elemente liigutada. Valitud elemente saab liigutada ka nooleklahvidega.

- Lisa tipp: klõpsa visuaalse graafiredaktori lõuendil vajalikus kohas ja loo uus tipp, mis kuulub parajasti valitud graafile.

- Lisa seos: klõpsa mõnel tipul, hoia hiir all ja tõmba joon teise tipuni, milleni seos peab ulatuma. Seda toimingut saadab edu ainult siis, kui aktiivne graaf võimaldab sellist seost lisada (nt. orienteerimata graafil ei ole lubatud lisada kahe tipu vahele mitut seost).

- Kustuta: klõpsa elemendil selle kustutamiseks. Kui kustutad tipu, kustutatakse ka kõik sellega seotud seosed.

- Suurendus: klõpsa lõuendil, hoia &HVN; all ja joonista sellega ristkülik. Lõuendit suurendatakse, nii et näed ainult valitud osa. Samuti võib suurendada või vähendada hiirerattaga. Topeltklõps &HVNga; taasta esialgse suurenduse.

Peamine tööriistariba Peamine tööriistariba

#### Joondusriba

Lisada võib ka joondusriba. Mõnele selle riba toimingule klõpsates saab vahetult mõjutada parajasti valitud tippe:

- Üles: tipud joondatakse kõige ülemise tipu vertikaalse positsiooni järgi. See puudutab ainult vertikaalset positsiooni.

- Keskele: tippude joondamine kõigi valitud tippude vertikaalsete positsioonide keskme järgi. See puudutab ainult vertikaalset positsiooni.

- Alla: tipud joondatakse kõige alumise tipu vertikaalse positsiooni järgi. See puudutab ainult vertikaalset positsiooni.

- Vasakule: tipud joondatakse kõige vasakpoolsema tipu horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.

- Keskele: tipud joondatakse kõige ülemise tipu horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.

- Paremale: tipud joondatakse kõige parempoolsema tipu horisontaalse positsiooni järgi. See puudutab ainult horisontaalset positsiooni.

- Ring: tipud joondatakse ringi, mille diameeter võrdub tippude maksimaalse vahemaaga. Tipud paigutatakse samas järjekorras nagu vaates alates tippude raskuskeskmest.

- Kattuvate seoste minimeerimine: rakendatakse Rruchterman-Reingoldi algoritmile kattuvate seoste arvu (ligilähedaseks) minimeerimiseks.

Joondusriba Joondusriba

### Graafi omadused

Vasakul külgribal leiab valikud kõigi avatud graafide jaoks. Kõik need on globaalsed iga graafi jaoks ning neid võib muuda tipu või seose jaoks vastavalt tipu või seose omaduste dialoogis.

- nimi: nimi, mida algoritm peab kasutama graafi mõjutamiseks.

- Andmete värv uute tippude jaoks: klõpsuga nupule Kõik saab muuta kõigi aktiivsete tippude värvi

- Osuti värv

Valikute viimane rida sisaldab klõpsatavaid nuppe:

- Nimede näitamise koht Andmed või Osutid

- Väärtuste näitamise koht Tipud või Seosed

## &rocs;i kasutamine

Tavaliselt on esimene samm graafi loomine visuaalse graafiredaktoriga. Seda võib teha käsitsi, see tähendab tippe luues ja neid ühendades, või siis kasutades mõningaid abialgoritme, mida pakub menüükäsk Tööriistad Graafi genereerimine. Samuti võib lõpuks kasutada tööriista Tööriistad Väärtuste omistamine, millega saab anda graafi tippudele ja seostele esialgsed väärtused. Kõige lõpuks tuleb graafile anda nimi. Seda kasutatakse edaspidi identifikaatorina, mida läheb vaja skriptimootoril.

### Skriptimine

&rocs; kasutab JavaScriptile sarnanevat skriptikeelt. See tähendab, et muutujate ja funktsioonide defineerimine ning nende kasutamine käib täpselt samamoodi nagu JavaScriptis. Lisaks pakub &rocs; mitmeid funktsioone, mis võimaldavad kasutada graafe visuaalse graafiredaktori lõuendil ja nende elemente.

#### Graafi kasutamine

Skriptiliideses saab ligipääsu graafile tagada lihtsalt selle nime kirjutades ja kasutades seda objektina koos mõnega järgnevatest funktsioonidest. ligipääsu tipule või seosele annab graafiobjekti identifikaator.

Graafiobjektid

-     // functions
           array list_nodes();
           array list_edges();
           node add_node(name);
           edge add_edge(from, to);
           node node_byname(QString& name);
           node begin_node();
           array end_nodes();

      // variables
           bool directed
           bool automate
           string name
           string nodeDefaultColor // in HEXA
           string edgeDefaultColor  // in HEXA

Tipuobjektid

-     // functions
           array adj_nodes();
           array adj_edges();
           array input_edges();
           array output_edges();
           array loop_edges();
           array connected_edges(Node *n);
           void self_remove();

      // variables
          double x
          double y
          double width
          string value
          string name
          string color  // in HEXA
          bool begin
          bool end

Seoseobjektid

-     string color ( em hexa )
          string value
          string name
          double width
          string style ( dot, dash, dash dot, solid )

          node start();
          node  end();

          void self_remove();

#### Graafi algoritmid

Mõnikord tuleb kasuks, kui tarvitad standardsete ülesannete funktsioone, näiteks lühima vahemaa arvutamiseks kahe tipu vahel. Praegu toetame järgmisi algoritme, mida saab skriptimootoriga välja kutsuda sama graafi tippudel.

Lühima teekonna arvutamine

- Arvutab lühima tee tippude algus ja lõpp vahel. Mõlemad tipud peavad asuma ühel graafil. Arvutamine arvestab ka seda, kas graaf on orienteeritud või orienteerimata.

      	array dijkstra_shortest_path Node* algus Node* lõpp

### Näide

Selle on lihtne näidisskript, mis määrab kindlaks esimese graafi nelja esimese tipu värvi:

    /* A simple example that sets the color of the 4 first nodes in the first
    graph: */

    var colors = new Array("red", "green", "blue", "yellow");

    /* graphs is an array of graphs, you can access a graph by its index in the
    array or by its name, so if the first graph's name is Untitled0, the following
    sentence are right  */
    var list1= graphs[0].list_nodes(); //  1st form.
    var list2=Untitled0.list_nodes();              // 2nd form

     for ( var i = 0; i < colors.length; i++){
            if (i
    > list2.length) break;
            list2[i].color = colors[i]
     }

### Import ja eksport

&rocs; toetab praegu importimisel ja eksportimisel järgmisi failivorminguid:

- DOT-failid, tuntud ka kui Graphviz-failid

- GML-failid

- Klaartekstfailid

Praegu imporditakse enamiku failitüüpide korral ainult üksikud väärtused. Imporditavate väärtuste hulka kuuluvad tipud ja nendega seotud seosed, kõigi elementide nimed, väärtused ja olemasolu korral ka koordinaadid.

## Autorid ja litsents

&rocs;

Rakenduse autoriõigus:

- Autoriõigus 2008: Ugo Sangiori (ugorox AT gmail.com)

- Autoriõigus 2008-2011: Tomaz Canabrava (tcanabrava AT kde.org)

- Autoriõigus 2008-2011: Wagner Reck (wagner.reck AT gmail.com)

- Autoriõigus 2011: Andreas Cord-Landwehr (cordlandwehr AT googlemail.com)

Dokumentatsiooni autoriõigus:

- Dokumentatsiooni autoriõigus 2009: &Anne-Marie.Mahfouf; &Anne-Marie.Mahfouf.mail;

- Dokumentatsiooni autoriõigus 2009: Tomaz Canabrava (tcanabrava AT kde.org)

- Dokumentatsiooni autoriõigus 2011: Andreas Cord-Landwehr (cordlandwehr AT googlemail.com)

Tõlge eesti keelde: Marek Laane bald@smail.ee

&underFDL; &underGPL;

## Paigaldamine

### &rocs;i hankimine

&install.intro.documentation;

### Kompileerimine ja paigaldamine

&install.compile.documentation;
&documentation.index;