Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 4 / 15 Stekai ir eilės ~50 min
Kodas

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.

Spąstai

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.