Table of Contents

Szukanie ścieżek

1. Algorytmy poszukiwania ścieżek

Dla chcących wiedzieć więcej: Chapter 3: Searching for Solutions

2. Mapa a graf przeszukiwania

Mapa obszaru i graf przeszukiwania są niezależne!

Dla chcących wiedzieć więcej: Zestawienie podstawowych reprezentacji wykorzystywanych przy tworzeniu map

3. A*

Narzędzie webowe: https://krzysztof.kutt.pl/didactics/psi/pathfinder/
(bazuje na https://github.com/qiao/PathFinding.js)

  1. Na początek warto pobawić się różnymi algorytmami i sprawdzić jak działają.
    • Można przesuwać początek (zielony) i koniec (czerwony) ścieżki
    • Można rysować krawędzie
  2. Później chcemy przetestować różne heurystyki dla A*. W pole My heuristic można wpisać np.:
    • dx
    • dy
    • dx + dy
    • Math.sqrt(dx*dx + dy*dy)
    • -dx - dy
    • 10 * Math.random()
  3. Zadanie A:
    • Przygotuj pierwszy test klikając najpierw Clear Walls (wyczyści wszystkie ściany), a później Build 1st test:
    • Jaką heurystykę należy wpisać dla A*, aby najkrótszą ścieżką była ta “nad” ścianą?
    • Dlaczego?
  4. Zadanie B:
    • Przygotuj drugi test klikając Clear Walls i Build 2nd test:
    • Jaką heurystykę przyjąć dla A*, aby znaleźć ścieżkę poniżej 300 operacji (operations w lewym dolnym rogu po zakończeniu wyszukiwania)
    • Warto porównać z włączoną opcją Bi-directional (ale zejść poniżej 300 operacji należy bez tej opcji!)

Dla chcących wiedzieć więcej: Artykuł opisujący heurystyki dla grid map

CodinGame to platforma do nauki/doskonalenia umiejętności programistycznych wykorzystująca gry. Co ważne, większość gry została już przygotowana, a naszym zadaniem jest tylko dopisanie odpowiedniej logiki, co idealnie wpasowuje się w nasze zajęcia!

Zadanie jest dostępne pod adresem: Death First Search - Episode 1

  1. Na początek zapoznaj się ze szczegółowym opisem zadania dostępnym w IDE (po kliknięciu Solve na stronie problemu albo po przejściu bezpośrednio pod link)
  2. [3 EXP] Zapoznaj się z interfejsem i przygotuj kod, który rozwiązuje pierwsze dwa test cases (01. Simple test i 02. Several paths; aby sprawdzić dany test case należy kliknąć odpowiedni przycisk Play testcase)
  3. [3 EXP] Przygotuj rozwiązanie dla test case 03. Star
  4. [3 EXP] Przygotuj kod, który poprawnie rozwiązuje wszystkie test cases + rozwiązuje dodatkowe test cases wykonywane po kliknięciu Submit; możesz wykorzystać dowolny algorytm (ale wystarczy zwykły BFS)
  5. Jeżeli to było zbyt proste, spróbuj zmierzyć się z Death First Search - Episode 2 (już bez punktów, dla własnej satysfakcji)