Zaktualizuj 'Raports/SI_Raport_2.md'
This commit is contained in:
parent
c6ab3a51df
commit
b999fd4df6
@ -13,29 +13,26 @@
|
||||
#### Implementacja
|
||||
|
||||
Pierwszym podejściem naszej grupy do rozwiązania problemu była implementacja
|
||||
algorytmu przeszukiwania drzewa w głąb - DFS (Wersja iteracyjna).
|
||||
algorytmu przeszukiwania drzewa w głąb - DFS (Wersja rekurencyjna).
|
||||
Aby zaimplementować ten algorytm, niezbędne było przygotowanie dla niego kilku
|
||||
struktur pomocniczych dzięki którym będziemy mogli jasno zdefiniować warunki stopu i uzyskać satysfakcjonujące nas rozwiązanie.
|
||||
|
||||
Do użytych struktur należą:
|
||||
|
||||
- **Lista dwuwymiarowa przedstawiająca mapę w formie siatki po której można łatwo iterować** - Jeden stan takiej listy traktowaliśmy jako wierzchołek grafu
|
||||
- **Stos wykonanych przez algorytm ruchów** - Używany do przechodzenia do kolejnych możliwych stanów jak i zapamiętania rozwiązania problemu.
|
||||
- **Lista możliwych ruchów do wykonania przez agenta przy konkretnym stanie mapy**
|
||||
- **Licznik głębokości na którą zszedł algorytm** - Zapobiega zajściu za głęboko w przypadku braku rozwiązania
|
||||
|
||||
**Przebieg algorytmu**:
|
||||
|
||||
- Dodaj do stosu pierwszy krok
|
||||
- Dopóki stos nie jest pusty:
|
||||
1. Weź stan mapy ze stosu (operacja stack.pop())
|
||||
2. Sprawdź warunek końca (Czy problem został rozwiązany ?)
|
||||
- Jeżeli tak, zakończ algorytm
|
||||
1. Sprawdź czy w pobliżu śmieciarki znajduje się nieopróżnioony domek
|
||||
2. Jeżeli możliwa jest jakaś akcja (zebranie/oddanie smieci) wykonaj ją
|
||||
- Jeżeli akcja została wykonana, zakończ algorytm
|
||||
- Jeżeli nie, sprawdź czy głębokość przekroczyła 30
|
||||
1. Jeżeli tak, zakończ algorytm informacją o braku rozwiązania
|
||||
2. Jeżeli nie, kontynuuj algorytm
|
||||
3. Dla każdego możliwego kierunku wykonaj algorytm od punktu 1
|
||||
|
||||
Rozwiązanie następuje wtedy, gdy wszystkie śmieci zostaną zebrane przez agenta.
|
||||
Rozwiązanie następuje wtedy, gdy domek zostaje opróżniony. Algorytm zostaje wywołany tyle samo razy, ile jest domków. Agent nie zna położenia domków na mapie podczas działania algorytmu.
|
||||
|
||||
#### Obserwacje
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user