Ariadnin algoritmus (backtracking)

Probrali jsme interaktivně algoritmus na průchod bludištěm, který byl představen na přednášce. Krátké shrnutí toho opravdu nejdůležitějšího by mohlo vypadat například takto:

vstup:

Bludiště, startovní pozice (Ariadna), cílová pozice (Mínotauros)

výstup:

Jedna z následujících možností:

  1. 1.) Théseus se vrátí zpět s tím, že Mínotauros v bludišti není.
  2. 2.) Théseus najde Mínotaura a může se podle nitě vrátit zpět.

Značení cest

Pro potřebu algoritmu značíme cesty žluté (je tam natažena niť), červené (dvakrát navštívené cesty označené červenou barvou) a zelené (cesty, které nejsou ani žluté ani červené - dosud neprozkoumané).

Pravidla pro pohyb v bludišti:

  1. 1. Minotauros ... stop (Minotauros nalezen a kontaktován/knock-outován/...)
  2. 2. víc než 1 žlutá ... vrať se zpět, namotávej a barvi na červeno
  3. 3. alespoň 1 zelená ... vpřed po zelené, rozmotávej niť
  4. 4. Ariadna ... stop (Minotauros nenalezen)
  5. 5. právě 1 žlutá ... vrať se zpět, namotávej a barvi na červeno

K vyzkoušení můžete použít třeba následující bludiště:

Mezi vlastnosti tohoto algoritmu patří následující fakta: pro libovolný vstup skončí, Theseus nejde žádnou cestou víc než 2x, v každém okamžiku lze po žluté cestě dojít k Ariadně. Pokud algoritmus chápete, pak by jste měli být schopni dokázat, že je to pravda.

Pascal

Ve zbytku cvičení jsme zkoušeli zkompilovat jednoduchý program a otestovat tak funkčnost pracovního prostředí. Mezi nejčastější problémy patřilo:

  • + nemůžu se nalogovat - pokud jste si 150% jistí uživatelským jménem a heslem, které zadáváte, zkuste kontaktovat službu v Labu, nebo zkuste změnit heslo svépomocí dle návodu.
  • + Pascal (Free/Turbo7) mi nedovolí uložit soubor - právo zápisu by jste měli mít určitě na disku H:. Své programy ukládejte pouze tam.
  • + Při kompilaci hlásí chybu - zkontrolujte zda nemáte v kódu překlepy, nebo jestli někde na konci řádku nechybí středník. Za posledním End má být tečka.

CodEx

V CodExu je založena skupina M61ZS. Pokud ještě z nějakého důvodu nejste jejími členy, napište mi ve vlastním zájmu mail. Příště bude přes CodEx zadána první domácí úloha. Jak odevzdávání do CodExu funguje si můžete vyzkoušet na jednoduché úloze, která je tam pro členy skupiny zadána už teď.

Mnich jde do kláštera

Na závěr cvičení jsem zmínil úlohu o mnichovi. Jde o jednoduchý problém s elegantním řešením. Třeba se vám někdy bude hodit, že ho znáte...