Exemplo n.º 1
0
  /**
   * 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);
  }
Exemplo n.º 2
0
  /** 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());
  }
Exemplo n.º 3
0
 /**
  * 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));
 }
Exemplo n.º 4
0
 /**
  * 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));
 }
Exemplo n.º 5
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';
       }
     }
   }
 }
Exemplo n.º 6
0
  /**
   * 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());
    }
  }
Exemplo n.º 7
0
  /**
   * 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());
  }
Exemplo n.º 8
0
  /**
   * 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());
  }
Exemplo n.º 9
0
 public void arvotasolmu(Solmu solmu) {
   solmu.etäisyysvanhemmasta = arvokartta[solmu.y][solmu.x];
 }
Exemplo n.º 10
0
 /**
  * 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());
 }
Exemplo n.º 11
0
 /** Merkkiesitys testausta varten. */
 @Override
 public String toString() {
   return "" + kohde.getSolmuNumero();
 }