Prijungiam history ir queue
Prijunk history ir queue prie main.go.
$ algo history -n 4
viewing:
→ Gubątėva
→ Pūlolė
→ Pugopa
→ Šąguke Gako
history holds 4
undo:
← Šąguke Gako
← Pugopa
← Pūlolė
← Gubątėva
history holds 0
Atgal ta pačia tvarka, tik atvirkščiai. Tai visas stekas.
Tikroje sistemoje: eilė, kuri ieško kelio
transit maršrutų programa turi grafą iš 1 531 stotelės ir 2 190 jungčių —
tai Vilniaus tinklas. Klausimui „per kiek mažiausiai stotelių nuvažiuosiu iš A į
B" ji naudoja paiešką platyn (BFS), o BFS varo eilė: paimk stotelę,
apžiūrėk kaimynus, sudėk juos į eilės galą, kartok.
Mūsų matavimu tai trunka 5,8–8,3 µs vienai užklausai.
Skaičius mažas, ir tai svarbu suprasti teisingai: eilė čia nėra siaurasis kaklelis, ir niekas jos neoptimizuoja. Bet struktūra dirba tikrą darbą tikroje sistemoje — būtent ji nustato, kuria tvarka aplankomos stotelės, ir būtent todėl BFS randa trumpiausią kelią, o ne bet kokį.
Pakeisk eilę steku ir gausi paiešką gilyn — teisingą programą, atsakančią į kitą klausimą. 14 pamokoje pastatysi abi.
BFS transite parašytas cikliškai, su aiškia eile, o ne rekursija. Kodėl
būtent taip — penktoji pamoka, kuri prasideda nuo šito steko.