/** * piirtää reitin tiedostoon ja reittikartta taulukkoon * * @param käydytsolmut * @throws IOException */ public void piirräreitti(PriorityQueue<Solmu> käydytsolmut) throws IOException { String nimi = new String("uk"); BufferedWriter reittikarttatiedosto = new BufferedWriter(new FileWriter("uk")); Solmu solmu = new Solmu(0, 0, null, 0); while (!käydytsolmut.isEmpty()) { solmu = käydytsolmut.poll(); for (int n = 0; n < kartankoko; n++) { for (int i = 0; i < kartankoko; i++) { if (solmu.x == n && solmu.y == i) { // reittikartta[i][n] = '-'; reittikartta[i][n] = (char) (solmu.summaamatkat(0, solmu.annavanhempi()) + 65); // reittikarttatiedosto.write("-"); reittikarttatiedosto.write('-'); } else { reittikarttatiedosto.write(reittikartta[i][n]); } } reittikarttatiedosto.newLine(); } } reittikarttatiedosto.close(); tulostakartta(reittikartta); }
/** Testaa findMin odotettu lopputulos ,palauttaa yhden Solmu olion joka pysyy keossa. */ @Test public void yksiSolmuKekoFindMinTest() { assertEquals(null, instanssi2.findMin()); instanssi2.insert(solmu1); assertEquals(1, solmu1.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu1.getValue(), instanssi2.findMin().getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu1.getValue(), instanssi2.findMin().getValue()); }
/** * Testaa DecreaseKey() odotettu lopputulos,keko palauttaa -1, koska parametrina annettua solmun * arvoa yritetaan kasvattaa keossa */ @Test public void increaseYritysDecreaseKeyTest() { assertNull(instanssi5.findMin()); solmu = new Solmu(3); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); Kekoalkio alkio = instanssi5.findKekoalkio(solmu); assertEquals(-1, instanssi5.decreaseKey(alkio, 4)); }
/** * Testaa DecreaseKey() odotettu lopputulos,keko palauttaa -1, koska keossa ei ole parametrina * annettua solmun arvoa */ @Test public void arvoaEiLoydyKekoDecreaseKeyTest() { assertNull(instanssi5.findMin()); solmu = new Solmu(3); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); Kekoalkio alkio = new Kekoalkio(solmu1); assertEquals(-1, instanssi5.decreaseKey(alkio, 0)); }
/** * arvottaa reitin sen perusteella mitä merkkejä kartassa on saa numeerisen kartan ja tekee siitä * yksinkertaisemman näköisen esim. kaikki random merkit jotka kaikki ovat yhtä arvokkaita niin * saavat saman arvon. * * @param kartta * @throws FileNotFoundException */ public void arvotareitti(char[][] kartta) throws FileNotFoundException { reittikartta = uusikartta(kartta); this.arvokartta = arvotakartta(kartta); for (int n = 0; n < kartankoko; n++) { for (int i = 0; i < kartankoko; i++) { if (arvokartta[n][i] == -1) { reittikartta[n][i] = 'L'; maalisolmu.x = i; maalisolmu.y = n; } else if (arvokartta[n][i] == 1) { reittikartta[n][i] = 'o'; } else if (arvokartta[n][i] == 30) { reittikartta[n][i] = '3'; } else if (arvokartta[n][i] == 400) { reittikartta[n][i] = '4'; } else if (arvokartta[n][i] == 0) { reittikartta[n][i] = 'A'; } } } }
/** * Testaa insert() odotettu lopputulos,kekoon onnistuu useamman kuin haarautumisaste solmun * lisääminen keko on kekoehdon mukaisesti ehyt lisäyksen jälkeen palauttaa tarkistuksessa oikean * minimikeon arvon */ @Test public void haarautumisaste2ViisiSolmuaInsertTest() { assertEquals(solmuNull, instanssi2.getMin()); assertEquals(2, instanssi2.getAste()); // isommasta pienempään järjestyksessä for (int i = 4; i >= 0; i--) { solmu = new Solmu(i); instanssi2.insert(solmu); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); } // pienemmästä isompaan solmu järjestyksessä instanssi2 = Dkeko.makeHeap(solmuarvo2); assertEquals(solmuNull, instanssi2.findMin()); for (int i = 0; i < 5; i++) { solmu = new Solmu(i); instanssi2.insert(solmu); assertEquals(0, instanssi2.findMin().getValue()); } }
/** * Testaa findMin odotettu lopputulos ,palauttaa yhden Solmu olion arvolla 0,pysyy koko ajan keon * pienimpänä joka pysyy keossa.Asetetaan solmut järjestyksessä pienemmästä suurempaan */ @Test public void keossa012SolmuSolmuKekoFindMinTest() { assertEquals(null, instanssi2.findMin()); instanssi2.insert(solmu); assertEquals(0, solmu.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); instanssi2.insert(solmu1); assertEquals(1, solmu1.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); instanssi2.insert(solmu2); assertEquals(2, solmu2.getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); assertNotNull(instanssi2.findMin()); assertEquals(solmu.getValue(), instanssi2.findMin().getValue()); }
/** * Testaa decreaseKey odotettu lopputulos,keossa olevan solmun arvon pienentäminen onnistuu ja * solmusta tulee keon pienin alkio */ @Test public void aste5RandomDecreaseKeyTest() { assertEquals(solmuNull, instanssi5.findMin()); for (int i = 0; i < 59; i++) { solmuarvo = generator.nextInt(Integer.MAX_VALUE); if (pienin > solmuarvo) { pienin = solmuarvo; } if (suurin < solmuarvo) { suurin = solmuarvo; } solmu = new Solmu(solmuarvo); instanssi5.insert(solmu); assertEquals(pienin, instanssi5.findMin().getValue()); } instanssi5.deleteMin(); assertTrue(pienin != instanssi5.findMin().getValue()); solmu1.setValue(suurin); Kekoalkio alkio = instanssi5.findKekoalkio(solmu1); instanssi5.decreaseKey(alkio, pienin); assertEquals(pienin, instanssi5.findMin().getValue()); }
public void arvotasolmu(Solmu solmu) { solmu.etäisyysvanhemmasta = arvokartta[solmu.y][solmu.x]; }
/** * Testaa insert() odotettu lopputulos ,kekoon onnistuu yhden solmun lisäys keko on kekoehdon * mukaisesti ehyt lisäyksen jälkeen palauttaa tarkistuksessa oikean minimikeon arvon */ @Test public void haarautumisaste5YksiSolmuInsertTest() { assertEquals(solmuNull, instanssi5.getMin()); instanssi5.insert(solmu); assertEquals(solmu.getValue(), instanssi5.findMin().getValue()); }
/** Merkkiesitys testausta varten. */ @Override public String toString() { return "" + kohde.getSolmuNumero(); }