public override Csucs KeresCiklussal(Csucs start) { Csucs akt = start; while (akt != null) { if (akt.TerminalisE()) { return(akt); } if (akt.Melyseg >= melysegiKorlat) { akt = akt.Szulo; } Csucs gyermek = akt.KovetkezoGyermek(); if (gyermek == null) { akt = akt.Szulo; } else { akt = gyermek; } } return(null); }
public Csucs KovetkezoGyermek() { AbsztraktAllapot kovAllapot = null; while (kovAllapot == null || KorFigyeles(kovAllapot)) { if (legutobbiOp == allapot.OperatorokSzama()) { break; } kovAllapot = allapot.SzuperOperator(this.legutobbiOp); legutobbiOp++; } if (kovAllapot == null) { return(null); } Csucs gyermek = new Csucs(kovAllapot); gyermek.allapot = kovAllapot; gyermek.melyseg = this.melyseg + 1; gyermek.szulo = this; gyermek.legutobbiOp = 0; return(gyermek); }
//Konstruktor public Csucs(AbsztraktAllapot k) { this.allapot = k; this.melyseg = 0; this.szulo = null; this.legutobbiOp = 0; // hívás után kell növelni }
//Medódusok bool KorFigyeles(AbsztraktAllapot ujAllapot) { Csucs cs = this; while (cs != null) { if (cs.allapot.Equals(ujAllapot)) { return(true); } cs = cs.szulo; } return(false); }
public void FindTheWay(SolarSystem current, SolarSystem target) { AbsztraktAllapot SystemsAllapot = new SolarSystemAllapot(current, target, game.Systems); GrafKereso Gk = new BackTrack(5); Csucs celcsucs = Gk.Keres(new Csucs(SystemsAllapot)); if (celcsucs == null) { Debug.Log("Nem lehet így megoldani!"); } else { Csucs cs = celcsucs; while (cs != null) { cs = cs.Szulo; } } }
public override Csucs Keres(Csucs akt) { if (akt.TerminalisE()) { return(akt); } if (akt.Melyseg >= melysegiKorlat) { return(null); } Csucs terminalis = null; while (terminalis == null) { Csucs gyermek = akt.KovetkezoGyermek(); if (gyermek == null) { return(null); } terminalis = Keres(gyermek); } return(terminalis); }
public abstract Csucs KeresCiklussal(Csucs start);
public abstract Csucs Keres(Csucs start);