Hranice mriežky

Pri prechádzaní cez susedov vrchola si musíme dávať pozor, či nie je na kraji mriežky. V takom prípade nám totiž hrozí, že "vypadneme z mriežky", teda sa pokúsime spracovať vrchol, ktorý v našej mriežke nie je. Jedna možnosť je vždy pred spracovaním vrchola skontrolovať, či naozaj ide o vrchol mriežky (a ak nejde, preskočiť ho):

for(int smer=0; smer<4; smer++) {
    int nx = x+dX[smer], ny = y+dY[smer];
    if(nx < 0 || nx >= S || ny < 0 || ny >= R) continue;
    if( /* TREBA SPRACOVAT VRCHOL (nx, ny) */ ) {
        /* SPRACUJ (nx, ny) */
    }
}

Často sa to však dá aj pohodlnejšie: zarážkami. Príklad zo života:

Máme bludisko nakreslené v štvorcovej sieti. Každé políčko je buď priechodné (chodba) alebo nepriechodné (stena). Bludisko môžeme chápať ako graf: každé políčko je vrchol a medzi každými dvoma susednými políčkami je hrana (tento graf je teda mriežka). Ak našom bludisku spustíme nejaké prehľadávanie (napríklad do šírky), ktoré pôjde iba po priechodných políčkach, musíme si dávať pozor, aby nevypadlo cez okraj. Jednoduchý spôsob ako to docieliť je rozšíriť si našu mriežku o jeden riadok/stĺpec v každom smere a tieto nové riadky/stĺpce vyplniť stenami. Takto sa prehľadávanie nikdy nedostane na kraj mriežky (lebo cez steny nejde) a teda nemusíme ošetrovať vypadávanie.