/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Samuray
*/
import java.applet.Applet;
import java.awt.Button;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
public class index_cost extends Applet {
Font f = new Font("Calibri", Font.BOLD, 20);
Font s = new Font("Calibri", Font.BOLD, 12);
int valoare = 0;
Button next;
@Override
public void init() {
next = new Button("Urmatoarea ramura");
add(next);
}
@Override
public boolean action(Event e, Object args) {
if (e.target == next) //target = apasa
{
valoare++;
}
addNode();
return true;
}
@Override
public void paint(Graphics g) {
}
public void addNode() {
Graphics g = this.getGraphics();
g.drawString("1.initializeaza listele FRONTIERA ?{Si} si TERITORIU ?{}", 20, 560);
g.drawString("2. calculeaza f(Si) si asociaza aceasta valoare nodului Si", 20, 575);
g.drawString("3. daca FRONTIERA={} atunci întoarce INSUCCES /*nu exista solutie*/", 20, 590);
g.drawString("4. selecteaza din FRONTIERA un nod S pentru care f(S) este minima", 20, 605);
g.drawString("5. elimina nodul S din FRONTIERA si insereaza-l în TERITORIU", 20, 620);
g.drawString("6. daca S este starea finala atunci", 20, 635);
g.drawString("6.1. construieste solutia(S,..., Si), prin trasarea caii de-a lungul pointer-ilor de la scop înapoi la starea initiala, Si", 20, 650);
g.drawString("6.2 întoarce SUCCES /* s-a gasit solutia problemei */", 20, 665);
g.drawString("7. expandeaza nodul S", 370, 665);
g.drawString("7.1. genereaza toti succesorii directi Sj ai nodului S", 20, 680);
g.drawString("7.2. pentru fiecare succesor Sj (1=j=n) al lui S executa", 20, 695);
g.drawString("7.2.1. calculeaza f(Sj) = g(S) + cost_arc(S, Sj) + h(Sj) si asociaza valoarea lui Sj", 650, 560);
g.drawString("7.2.2. stabileste legatura fiu – parinte Sj -> S, prin atasarea unui pointer de la Sj înapoi la S", 650, 575);
g.drawString("7.2.3 daca Sj ? toate starile anterior generate în solutia partiala curenta atunci introduce Sj în FRONTIERA", 650, 590);
g.drawString("7.2.4 altfel i. fie S’j copia lui Sj din FRONTIERA sau TERITORIU ii. daca g(Sj) < g(S’j) atunci", 650, 605);
g.drawString("* transforma legatura S’j -> predecesor(S’j) în legatura S’j -> S", 650, 620);
g.drawString("* înlocuieste f(S’j) asociata lui S’j cu f(Sj) (se modifica doar g) daca S’j ? TERITORIU atunci", 650, 635);
g.drawString("*elimina S’j din TERITORIU si insereaza-l în FRONTIERA iii. ignora nodul Sj", 650, 650);
g.drawString("8. repeta de la pasul 3", 650, 665);
g.setFont(f);
g.drawString("Cautare cu cost uniform", 20, 20);
g.drawRoundRect(615, 40, 40, 40, 40, 40);
g.drawString("1", 631, 67);
if (valoare == 2) {
g.drawRoundRect(460, 140, 40, 40, 40, 40);
g.drawLine(616, 70, 500, 150);// ramura stinga
g.drawString("2", 475, 166);
g.drawLine(500, 161, 760, 161); // linia ce leaga 2 cu 3
} else if (valoare == 3) {
g.drawRoundRect(760, 140, 40, 40, 40, 40);
g.drawString("3", 775, 166);
g.drawLine(656, 70, 762, 150);//ramura dreapta
} else if (valoare == 4) {
g.drawRoundRect(338, 268, 40, 40, 40, 40);//1 inel
g.drawString("4", 353, 294);
g.drawLine(460, 165, 370, 270);//ramura stinga
} else if (valoare == 5) {
g.drawRoundRect(870, 268, 40, 40, 40, 40);//4 inel
g.drawString("5", 885, 294);
g.drawLine(800, 165, 880, 270);//ramura dreapta
} else if (valoare == 6) {
g.drawRoundRect(990, 268, 40, 40, 40, 40);//4 inel
g.drawString("7", 1005, 294);
g.drawLine(910, 288, 990, 288);//ramura dreapta
} else if (valoare == 7) {
g.drawRoundRect(990, 400, 40, 40, 40, 40);//4 inel
g.drawString("10", 1000, 424);
g.drawLine(1010, 310, 1010, 400);//ramura dreapta
} else if (valoare == 8) {
g.drawRoundRect(870, 400, 40, 40, 40, 40);//4 inel
g.drawString("6", 885, 424);
g.drawLine(890, 310, 890, 400);//ramura dreapta
} else if (valoare == 9) {
g.drawRoundRect(240, 398, 40, 40, 40, 40);//1 inel
g.drawString("5", 255, 424);
g.drawLine(340, 300, 270, 400);//ramura stinga
} else if (valoare == 10) {
g.drawRoundRect(750, 500, 40, 40, 40, 40);//4 inel
g.drawString("8", 765, 527);
g.drawLine(875, 437, 785, 507);//ramura dreapta
} else if (valoare == 11) {
g.drawRoundRect(990, 500, 40, 40, 40, 40);//4 inel
g.drawString("9", 1005, 527);
g.drawLine(906, 435, 998, 505);//ramura dreapta
g.drawString("4", 710, 100);
g.drawString("5", 635, 150);
g.drawString("3", 385, 200);
g.drawString("6", 850, 200);
g.drawString("7", 280, 320);
g.drawString("8", 900, 340);
g.drawString("1", 1030, 340);
g.drawString("9", 930, 305);
g.drawString("3", 960, 470);
g.drawString("2", 820, 470);
g.drawString("12", 525, 100);
} else if (valoare == 12) {
g.drawLine(670, 70, 762, 137);//ramura dreapta
g.drawLine(762, 137, 752, 137);//ramura dreapta
g.drawLine(762, 137, 762, 127);//ramura dreapta
g.drawString("3", 520, 390);
} else if (valoare == 13) {
g.drawLine(813, 165, 883, 256);//ramura dreapta
g.drawLine(883, 256, 873, 256);//ramura dreapta
g.drawLine(883, 256, 883, 246);//ramura dreapta
g.drawString("5", 540, 390);
} else if (valoare == 14) {
g.drawLine(915, 276, 985, 276);//ramura dreapta
g.drawLine(985, 276, 972, 269);//ramura dreapta
g.drawLine(985, 276, 972, 284);//ramura dreapta
g.drawString("7", 560, 390);
} else if (valoare == 15) {
g.drawLine(1020, 313, 1020, 390);//ramura dreapta
g.drawLine(1020, 390, 1010, 380);//ramura dreapta
g.drawLine(1020, 390, 1030, 380);//ramura dreapta
g.drawString("10", 580, 390);
}
//Liniile
g.drawLine(500, 370, 600, 370);
g.drawLine(500, 395, 600, 395);
g.drawString("1", 500, 390);
}
}
Abonați-vă la:
Postare comentarii (Atom)
Niciun comentariu:
Trimiteți un comentariu