X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa2-materijali.git;a=blobdiff_plain;f=PretrazivanjeSaVracanjem%2FLavirint%2FNajboljiPut%2FLavirint.java;fp=PretrazivanjeSaVracanjem%2FLavirint%2FNajboljiPut%2FLavirint.java;h=0000000000000000000000000000000000000000;hp=a96bd8c6257b56a757b7d3921efff98ce8522162;hb=259cc384743122b180e79a962ec0f11634a5b67c;hpb=2f2710782e8107fc8dd587e6b70212e521561c42 diff --git a/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Lavirint.java b/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Lavirint.java deleted file mode 100644 index a96bd8c..0000000 --- a/PretrazivanjeSaVracanjem/Lavirint/NajboljiPut/Lavirint.java +++ /dev/null @@ -1,88 +0,0 @@ -/** - * Klasa Lavirint sadrzi nekoliko metoda za trazenje puteva. - * - * Klase KomparatorPoDuzini i KomparatorPoVrednosti predstavljaju komparatore - * koji se korste pri trazenju najkraceg i najvrednijeg puta. - */ - -import java.util.Comparator; - -public class Lavirint { - - // Polje m sadrzi kompletnu mapu - private Mapa m; - // Polje optResenje sluzi za pamcenje optimalnog resenja - private Resenje optResenje; - - // Ucitava mapu iz datog fajla i stampa je na ekran - Lavirint(String imeFajla) { - m = Mapa.ucitajIzFajla(imeFajla); - m.stampaj(); - } - - // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja - // koristi komparator po duzini resenja, tj. trazi se najkrace resenje - // Samo resenje kreira se u metodi optPut - public Resenje najkraciPut(int x, int y) { - Resenje r = new Resenje(); - optPut(x, y, r, new KomparatorPoDuzini()); - return optResenje; - } - - // Kreira optimalno resenje za put, pri cemu se za optimalnost resenja - // koristi komparator po duzini resenja, tj. trazi se najvrednije resenje - // Samo resenje kreira se u metodi optPut - public Resenje najvrednijiPut(int x, int y) { - Resenje r = new Resenje(); - optPut(x, y, r, new KomparatorPoVredosti()); - return optResenje; - } - - // Proverava da li postoji put korsiteci pretrazivanje sa vracanjem - // Ukoliko se pronadje na prvi ili optimalniji put, taj put se pamti u - // optResenje - // Optimalnost resenja se proverava komparatorom - private void optPut(int x, int y, Resenje r, Comparator c) { - if (x < 0 || x >= m.getSirina() || y < 0 || y >= m.getVisina()) { - return; - } - if (m.getPos(x, y)) { - return; - } - if (m.getMat(x, y) == Mapa.ZID) { - return; - } - if (m.getMat(x, y) == Mapa.IZLAZ) { - r.dodaj(x, y, 0); - if (optResenje == null || c.compare(r, optResenje) < 0) { - optResenje = r.kopija(); - } - r.izbaciKraj(); - return; - } - - // pokusavamo da trazimo dalje put - m.setPos(x, y, true); - r.dodaj(x, y, m.getMat(x, y)); - optPut(x + 1, y, r, c); - optPut(x, y + 1, r, c); - optPut(x, y - 1, r, c); - optPut(x - 1, y, r, c); - m.setPos(x, y, false); - r.izbaciKraj(); - } -} - -// Komparator za resenja po duzini resenja -class KomparatorPoDuzini implements Comparator { - public int compare(Resenje r1, Resenje r2) { - return r1.getLength() - r2.getLength(); - } -} - -// Komparator za resenja po vrednosti resenja -class KomparatorPoVredosti implements Comparator { - public int compare(Resenje r1, Resenje r2) { - return r2.getVrednost() - r1.getVrednost(); - } -} \ No newline at end of file