Optimeerimine Eeltoodud näites tuleb iga järgmise kaugusega tippude ploki puhul kogu kauguste massiiv uuesti läbi käia. Väikese elementide arvu puhul pole sellest probleemi. Kui aga tippude arv kasvab kümnetesse tuhandetesse (nt. veebilehestiku puhul lehekülgede arv), siis ilmneb, et arvuti teeb hulga asjatut tööd. Veidi järele mõeldes selgub, et edasi on põhjust minna vaid nendest tippudest, kuhu viimatisel kontrollimisel jõuti. St., et nt. 3 serva kaugusel asuva tipu juurde on võimalik pääseda vaid 2 serva kaugusel asuvast tipust. Nii et kui parajasti otsitakse algpunktist ühe serva kaugusel olevate tippude kaudu pääsetavaid tippe, siis on leitud tipud põhjust meelde jätta. Kui 1 serva kaugusel olevad tipud läbi vaadatud, siis järgmisel ringil otsides võib uusi tippe leida vaid viimati 2 serva kaugusele märgitud tippude kaudu. Meeldejätmiseks on mitu võimalust. Üheks mooduseks oleks näiteks kaks massiivi. Ühes on kirjas parajasti vaadatavad tipud. Teises aga vaatamisel leitud tipud. Kui parajasti vaadatavad tipud otsa saavad, siis tuleb edasiminekuteid otsida leitud tippude hulgast. Nii võib leitud tippude massiivi muuta uuritavate tippude massiiviks ning sealtkaudu edasiminekuteid uurida. Uued leitud tipud paigutatakse siis jällegi eelnevalt tühjendatud leitud tippude massiivi. Sama töö teeb ära laiemaltki kasutatav võimalus nimega "järjekord". Et samas järjekorras, kui siia elemente lisatakse, samas järjekorras ka võetakse. Et kes seisab esimesena sabasse, saab ka esimesena oma kauba kätte. Nii on võimalik panna leitud tippe järjekorra lõppu ning uusi uuritavaid tippe võtta järjekorra eest. Nii on kindel, et lähemad tipud on enne läbi uuritud, kui kaugemate tippudeni jõutakse. Sest lähemad tipud satuvad lihtsalt varem järjekorda. Ülesandeid * Koosta tühi täisarvude massiiv hoidmaks leitud ja uurimist ootavate tippude järjekorranumbreid. Massiivi pikkuseks olemasolevate tippude arv, sest rohkem kui korra pole siin näites mõtet ühte tippu uurida - tema kaugus algpunktist on juba teada. * Loo muutujad "uurimisalgus" ja "uurimisots". Esimene tähistab järgmisena välja võetava ning teine viimati pandud elemendi järjekorranumbrit. Säti väärtused algul nõnda, et järjekord oleks tühi. * Loo käsklus järjekorda väärtuse lisamiseks. Selle tulemusena suureneb "uurimisots" ning vastavale kohale massiivis pannakse lisatud element. * Loo käsklus järjekorra algusest väärtuse küsimiseks koos eemaldamisega - "uurimisalgus" suureneb ühe võrra. * Loo käsklus järjekorras olevate elementide väljatrükiks. * Loo käsklus kontrollimaks, kas järjekorras leidub veel elemente. * Katseta testprogrammi abil arvude lisamist järjekorda ning eemaldamist sealt. * Täienda eelnevalt loodud algtipust kaugust määravat programmi nõnda, et uute seotud tippude otsimisel võetakse uuritavad tipud järjekorrast ning lisatakse leitud tipud järjekorda. Töö lõppeb, kui järjekord saab tühjaks. Tagasitee Eelneva abil saime küll teada iga elemendi kauguse alguspunktist. Või siis teate, et punktid polegi ühendatud. Tee enese leidmiseks tuleb aga andmeid talletada. Olemasoleva näite juures on lihtsam talletada teed lõpust algusesse kui algusest lõppu. Kui iga kaugemal asuva tipu juurde märkida, millise viimatise tipu kaudu sinna algtipust jõuti, siis ongi tee käes. Selleks tuleb teha juurde uus massiiv, milles iga uue sõlmeni jõudmisel märgitakse, kust sõlmest sinna jõuti. Kui soovida tagasiteed välja trükkida, siis saab kõigepealt trükkida lõpppunkti. Siis leiab tagasitee massiivist viimasesse punkti viinud sõlme järjekorranumbri ning saab selle välja trükkida. Siis aga omakorda tollest eelviimasest sõlmest eelmise leida ja taas trükkida. Kuni lõpuks jõutakse algusesse, kus eritunnuse (nt. taas miinus 1) järgi leitakse, et enam pole kuhugi tagasi minna ning ollaksegi alguspunktis. Ülesandeid * Loo tagasitee viidete jaoks täisarvumassiiv. Täida see otsingu algul miinus ühtedega. * Iga kord uue sõlme leidmisel jäta ühes selle juurde märgitud kaugusele meelde tagasitee massiivis ka sõlme number, kust kaudu uue sõlmeni jõuti. * Pärast kauguste arvutamist elemendist nr. 3 trüki ekraanile nii kauguste massiiv kui tagasitee massiiv. Kontrolli väärtuste õigsust. * Trüki tee ning tee pikkus etteantud tippude vahel või teata ühenduse võimatusest. * Võimalda tee trükkida ka vastupidises järjekorras, see tähendab algelemendist lõppelemendi poole. Selleks tuleb teel paiknevate sõlmede numbrid enne trükkimist meelde jätta ning siis vastupidises järjekorras väljastada. * Koosta kahemõõtmeline massiiv, kus oleksid kirjas kõikide tippude kaugused kõikidest teistest tippudest. Kontrolli tulemuse õigsust. * Loo sarnane massiiv ka tee leidmiseks kõikide võimalike tipupaaride vahel. Kontrolli samuti tulemust. * Loo rakendus, mille kaudu on võimalik määratud tippude vahelisi kaugusi ning teid küsida.