Metric - Minkowski distance between two points
when power is set P=1, minkowski metric results as same as manhattan distance equation and when set P=2, minkowski metric results as same as euclidean distance equation.
It measures the distance between two points. Each point lies on a line and has one element.
It measures the distance between two points. Each point lies on 2D cartesian plane and has 2 elements.
Example Calculation
This is an example calculation shown below explain how to find the distance between two vectors using Minkowski distance formula. A vector,array of elements declared and initialized in java using one dimensional array.
int A[] = { 5 ,3 }; // 2D vector A int B[] = { 2,1 }; // 2D vector B int P =3; P th power sqrt cab be converted into exponential power 1/Pfind distance between two vectors A and B using Minkowski distance equation.
||A-B|| = pow ( ((A[0]-B[0])^P + (A[1]-B[1])^P), 1/P ) = pow ( ((5-2)^3 + (3-1)^3) ,0.333 ); = pow ( ( 5^3 + 2^3 ),0.333 ); = pow ( (125 + 8),0.333 ); = pow ( 133,0.333 ); ||A-B|| = 5.096 Minkowski Distance between vectors A=[5,3] and B=[2,1] is 5.096
public class Minkowski
{
public static double distance(double x, double y,double p) {
return Math.pow(Math.pow(x-y,p),1/p);
}
public static double distance(int x, int y,double p) {
return Math.pow(Math.pow(x-y,p),1/p);
}
public static double distance(double x[], double y[],double p) {
double ds=0.0;
for(int n=0;n<x.length;n++)
ds += Math.pow(x[n]-y[n],p);
ds = Math.pow(ds, 1/p);
return ds;
}
public static double distance(int x[], int y[],double p)
{
double ds=0.0;
for(int n=0;n<x.length;n++)
ds += Math.pow(x[n]-y[n],p);;
ds = Math.pow(ds, 1/p);
return ds;
}
public static double[] distance(int x[][], int y[],double p) {
double ds[]=new double[x.length];
for(int n=0;n<x.length;n++)
ds[n]= distance(x[n],y,p);
return ds;
}
public static double[] distance(double x[][], double y[],double p) {
double ds[]=new double[x.length];
for(int n=0;n<x.length;n++)
ds[n] = distance(x[n],y,p);
return ds;
}
}
import java.util.Arrays;
public class MinkowskiMain {
public static void main(String[] args)
{
double p=3.0;
System.out.println("\n1D - Distance on integer" );
System.out.println("Minkowski Distance between
scalar int x and y" );
int ix=20;
int iy=30;
double dist=Minkowski.distance(ix, iy,p);
System.out.println("x="+ix +",y="+iy);
System.out.println("Distance :" + dist);
System.out.println("\n1D - Distance on double " );
System.out.println("Minkowski Distance between
scalar double x and y" );
double dx=2.6;
double dy=3.2;
double ds2=Minkowski.distance(dx, dy,p);
System.out.println("x="+dx +",y="+dy);
System.out.println("Distance :" + ds2);
System.out.println("2D - Distance on integer" );
System.out.println("nMinkowski Distance between
int vector x and y " );
int aix[]={2,3};
int aiy[]={3,5};
double ds3=Minkowski.distance(ix, iy,p);
System.out.println("x="+Arrays.toString(aix)
+",y="+Arrays.toString(aiy));
System.out.println("Distance :" + ds3);
System.out.println("\n2 Dimensional - distance on double " );
System.out.println("Minkowski Distance between
double vector x and y " );
double adx[]={2.4,3.1};
double ady[]={3.1,5.6};
System.out.println("x="+Arrays.toString(adx)
+",y="+Arrays.toString(ady));
double ds4=Minkowski.distance(adx, ady,p);
System.out.println("Distance :" + ds4);
System.out.println("\nN Dimensional Distance on double" );
System.out.println("Minkowski Distance between
set of int vectors x and int vector y " );
int aix2[][]={ {2,3,5} ,{1,7,4}};
int aiy2[]={3,5,7};
double ds5[]=Minkowski.distance(aix2, aiy2,p);
System.out.println("x="+Arrays.toString(aix2[0]) + ","
+ Arrays.toString(aix2[1]) +",y="+Arrays.toString(aiy2));
System.out.println( "Distance :" + Arrays.toString(ds5) );
System.out.println("\nMinkowski Distance between
set of double vector x and a double vector y " );
double adx2[][]={ {2.4,3.1,5.2},{1.2,7.2,4.5}};
double ady2[]={3.1,5.6,7.8};
double ds6[]=Minkowski.distance(adx2, ady2,p);
System.out.println("x="+ Arrays.toString(adx2[0])+","
+Arrays.toString(adx2[1]) +",y="+Arrays.toString(ady2));
System.out.println( "Distance :" + Arrays.toString(ds6) );
}
}
Output
1D - Distance on integer Minkowski Distance between scalar int x and y x=20,y=30 Distance :10.0 1D - Distance on double Minkowski Distance between scalar double x and y x=2.6,y=3.2 Distance :0.6000000000000001 2D - Distance on integer Minkowski Distance between int vector x and y x=[2, 3],y=[3, 5] Distance :10.0 2 Dimensional - distance on double Minkowski Distance between double vector x and y x=[2.4, 3.1],y=[3.1, 5.6] Distance :2.5961509971494334 N Dimensional Distance on double Minkowski Distance between set of int vectors x and int vector y x=[2, 3, 5],[1, 7, 4],y=[3, 5, 7] Distance :[3.0, 4.123105625617661] Minkowski Distance between set of double vector x and a double vector y x=[2.4, 3.1, 5.2],[1.2, 7.2, 4.5],y=[3.1, 5.6, 7.8] Distance :[3.674234614174767, 4.1303752856126765]
Comments
Post a Comment