/*
* Created on Nov 25, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author sueyeon syn
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
import java.lang.Math;
public class fastmap {
static int no;
static int counter = 0;
static float[][] m;
static float[][] docdist;
public static void main(String args[]){
String s = new String("1,0,1,0,1,1,1,1,0,1,0,1,1,1,1,1");
distance d = new distance();
d.DIM = 4;
docdist = d.dist(s);
no = d.n;
m = new float[3][no];
for(int k = 0; k<3; k++)
{
System.out.println("f=" + k);
docdist = euclidean(docdist);
for(int i = 0; i < no; i++)
{
for(int j = 0; j < no; j++)
System.out.print(docdist[i][j]);
System.out.println(" ");
}
System.out.println(" ");
}
System.out.println("RESULT OF FASTMAP");
for(int i = 0; i<3; i++)
{
for(int j = 0; j < no; j++)
System.out.print(m[i][j]+"\t");
System.out.println(" ");
}
}
public static int[] objects(float docdist[][]) {
float max = 0;
int a = 0;
int b = 0;
for(int i = 0; i < no; i++)
for(int j = 0; j < no; j++)
if(docdist[i][j] > max)
{
max = docdist[i][j];
a = i;
b = j;
}
int array[] = {a, b};
return array;
}
public static float[] cosine(float docdist[][]) {
int[] dis = objects(docdist);
int a = dis[0];
int b = dis[1];
float[] x = new float[no];
for(int i = 0; i < no; i++)
{
x[i] = (float) (Math.pow(docdist[a][i],2)+Math.pow(docdist[a][b],2)
-Math.pow(docdist[b][i],2))/(2*docdist[a][b]);
x[i] = (float) Math.round(x[i]*1000)/1000;
}
for(int j = 0; j < no; j++)
System.out.println(x[j]);
System.out.println(" ");
m[counter++] = x;
return x;
}
public static float[][] euclidean(float docdist[][]) {
float x[] = cosine(docdist);
float d[][] = new float[no][no];
for(int i = 0; i < no; i++)
{
for(int j = 0; j < no; j++)
{
d[i][j] = (float) Math.sqrt(Math.pow(docdist[i][j],2)
-Math.pow(x[i]-x[j],2));
if(Float.isNaN(d[i][j]))
d[i][j] = 0;
}
}
return d;
}
}
|