implementacija a* algoritmayeti/studenti/seminar_1/2015... · flood-fill algoritam...

21
Domagoj Penić Voditelj: izv.prof.dr.sc. Domagoj Jakobović Implementacija A* algoritma 1/21

Upload: others

Post on 29-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Domagoj Penić

Voditelj: izv.prof.dr.sc. Domagoj Jakobović

Implementacija A* algoritma

1/21

Page 2: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Sadržaj

A-Mazer

A* algoritam

Implementacija

Statistika

2/21

Page 3: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

A-Mazer

Metoda koja se koristi za izradu prohodnog

pravokutnog labirinta

3/21

Page 4: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

A-Mazer

Izrada pravokutne mreže

Označavanje i provjera prohodnosti

Spajanje elemenata

4/21

Page 5: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Izrada pravokutne mreže

5/21

Page 6: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Označavanje i prohodnost

Početak i kraj : (S, 0) i (F, N-1)

Označavanje polja

Provjera prohodnosti

6/21

Page 7: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Prohodni labirint

7/21

Page 8: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Flood-fill algoritam

flood_fill(polje){

ako sam već bio na tom polju: povratak

ako je polje zid: povratak

označi polje kao posjećeno

rekurzivni poziv:

polje-lijevo, polje-desno

polje-gore, polje-dolje

}

8/21

Page 9: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Neprohodni labirint

9/21

Page 10: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Algoritam A*

Algoritam koji se koristi u teoriji grafova za

pronalaženje najkraćeg puta između dva čvora

10/21

Page 11: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Algoritam A*

Dijkstrin algoritam

Heurističke metode

11/21

Page 12: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

12/21

Page 13: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Vrijednost čvora f(x)

f(x) = g(x) + h(x)

g(x) – prijeđeni put do trenutne pozicije

h(x) – vrijednost heurističke funkcije

13/21

Page 14: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Primjer rada algoritma

14/21

a

eb

d

c

Page 15: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Heurističke funkcije za problem

labirinta

Egzaktna heuristika

Udaljenost Manhattan

15/21

Page 16: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Egzaktna heuristika

16/21

Page 17: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Udaljenost Manhattan

17/21

Page 18: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Egzaktna heuristika

18/21

Page 19: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Udaljenost Manhattan

19/21

Page 20: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

20/21

Page 21: Implementacija A* algoritmayeti/studenti/Seminar_1/2015... · Flood-fill algoritam flood_fill(polje){ako sam već bio na tom polju: povratak ako je polje zid: povratak označi polje

Pitanja?

21/21