巡回セールスマン問題の解をヒルベルト曲線プログラムで近似しようとしています。私はアプレットを使ってそれをしなければなりません。コードにマトリックスを追加する方法と、アプレットに座標を表示する方法を教えてください。複数のフレームを持つ必要はありません。
コードは以下のとおりです。
import java.awt.*;
import java.applet.*;
// Background images (put a map in the back of the applet)
public class HilbertCurve extends Applet{
private SimpleGraphics sg = null;
private final int dist0=512;
private int dist=dist0;
@Override
public void init(){
resize(dist0, dist0 +300);
sg = new SimpleGraphics(getGraphics());
}
@Override
public void paint(Graphics g){
int level = 5;
dist = dist0;
for(int i=level; i>0; i--) dist/=2;
sg.goToXY (dist/2, dist/2);
HilbertU(level);
}
private void HilbertU(int level){
if(level>0){
HilbertD(level-1); sg.lineRel(0,dist);
HilbertU(level-1); sg.lineRel(dist,0);
HilbertU(level-1); sg.lineRel(0,-dist);
HilbertC(level-1);
}
}
private void HilbertD(int level){
if(level>0){
HilbertU(level-1); sg.lineRel(dist,0);
HilbertD(level-1); sg.lineRel(0,dist);
HilbertD(level-1); sg.lineRel(-dist,0);
HilbertA(level-1);
}
}
private void HilbertC(int level){
if(level>0){
HilbertA(level-1); sg.lineRel(-dist,0);
HilbertC(level-1); sg.lineRel(0,-dist);
HilbertC(level-1); sg.lineRel(dist,0);
HilbertU(level-1);
}
}
private void HilbertA(int level){
if(level>0){
HilbertC(level-1); sg.lineRel(0,-dist);
HilbertA(level-1); sg.lineRel(-dist,0);
HilbertA(level-1); sg.lineRel(0,dist);
HilbertD(level-1);
}
}
}
マトリックスに都市を設定し、都市に到達したら都市間に線を引き、そこに到達するための最短経路を見つける必要があります。