Class SquaredEuclideanDistance

• All Implemented Interfaces:
Distance<NumberVector>, Norm<NumberVector>, NumberVectorDistance<NumberVector>, PrimitiveDistance<NumberVector>, SpatialPrimitiveDistance<NumberVector>

@Alias("squaredeuclidean")
public class SquaredEuclideanDistance
extends AbstractNumberVectorDistance
implements SpatialPrimitiveDistance<NumberVector>, Norm<NumberVector>
Squared Euclidean distance, optimized for SparseNumberVectors. This results in the same rankings as regular Euclidean distance, but saves computing the square root.

Squared Euclidean is defined as: $\text{Euclidean}^2(\vec{x},\vec{y}) := \sum_i (x_i-y_i)^2$

Since:
0.1
Author:
Arthur Zimek
• Nested Class Summary

Nested Classes
Modifier and Type Class Description
static class  SquaredEuclideanDistance.Par
Parameterization class.
• Field Summary

Fields
Modifier and Type Field Description
static SquaredEuclideanDistance STATIC
Static instance.
• Constructor Summary

Constructors
Constructor Description
SquaredEuclideanDistance()
Deprecated.
Use static instance!
• Method Summary

All Methods
Modifier and Type Method Description
double distance​(double[] v1, double[] v2)
Special version for double arrays.
double distance​(NumberVector v1, NumberVector v2)
Computes the distance between two given DatabaseObjects according to this distance function.
boolean equals​(java.lang.Object obj)
SimpleTypeInformation<? super NumberVector> getInputTypeRestriction()
Get the input data type of the function.
int hashCode()
boolean isSquared()
Squared distances, that would become metric after square root.
double minDist​(SpatialComparable mbr1, SpatialComparable mbr2)
Computes the distance between the two given MBRs according to this distance function.
double norm​(NumberVector v)
Compute the norm of object obj.
private double preDistance​(double[] v1, double[] v2, int start, int end)
private double preDistance​(NumberVector v1, NumberVector v2, int start, int end)
private double preDistanceMBR​(SpatialComparable mbr1, SpatialComparable mbr2, int start, int end)
private double preDistanceVM​(NumberVector v, SpatialComparable mbr, int start, int end)
private double preNorm​(double[] v, int start, int end)
private double preNorm​(NumberVector v, int start, int end)
private double preNormMBR​(SpatialComparable mbr, int start, int end)
java.lang.String toString()
• Methods inherited from class elki.distance.AbstractNumberVectorDistance

dimensionality, dimensionality, dimensionality, dimensionality, dimensionality, dimensionality, dimensionality, dimensionality
• Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
• Methods inherited from interface elki.distance.Distance

isMetric, isSymmetric
• Methods inherited from interface elki.distance.SpatialPrimitiveDistance

instantiate
• Field Detail

• STATIC

public static final SquaredEuclideanDistance STATIC
Static instance. Use this!
• Constructor Detail

• SquaredEuclideanDistance

@Deprecated
public SquaredEuclideanDistance()
Deprecated.
Use static instance!
Constructor - use STATIC instead.
• Method Detail

• preDistance

private double preDistance​(double[] v1,
double[] v2,
int start,
int end)
• preDistance

private double preDistance​(NumberVector v1,
NumberVector v2,
int start,
int end)
• preDistanceVM

private double preDistanceVM​(NumberVector v,
SpatialComparable mbr,
int start,
int end)
• preDistanceMBR

private double preDistanceMBR​(SpatialComparable mbr1,
SpatialComparable mbr2,
int start,
int end)
• preNorm

private double preNorm​(NumberVector v,
int start,
int end)
• preNorm

private double preNorm​(double[] v,
int start,
int end)
• preNormMBR

private double preNormMBR​(SpatialComparable mbr,
int start,
int end)
• distance

public double distance​(NumberVector v1,
NumberVector v2)
Description copied from interface: PrimitiveDistance
Computes the distance between two given DatabaseObjects according to this distance function.
Specified by:
distance in interface NumberVectorDistance<NumberVector>
Specified by:
distance in interface PrimitiveDistance<NumberVector>
Parameters:
v1 - first DatabaseObject
v2 - second DatabaseObject
Returns:
the distance between two given DatabaseObjects according to this distance function
• distance

public double distance​(double[] v1,
double[] v2)
Special version for double arrays.
• norm

public double norm​(NumberVector v)
Description copied from interface: Norm
Compute the norm of object obj.
Specified by:
norm in interface Norm<NumberVector>
Parameters:
v - Object
Returns:
Norm
• minDist

public double minDist​(SpatialComparable mbr1,
SpatialComparable mbr2)
Description copied from interface: SpatialPrimitiveDistance
Computes the distance between the two given MBRs according to this distance function.
Specified by:
minDist in interface SpatialPrimitiveDistance<NumberVector>
Parameters:
mbr1 - the first MBR object
mbr2 - the second MBR object
Returns:
the distance between the two given MBRs according to this distance function
• isSquared

public boolean isSquared()
Description copied from interface: Distance
Squared distances, that would become metric after square root.

E.g. squared Euclidean.

Specified by:
isSquared in interface Distance<NumberVector>
Returns:
true when squared.
• toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
• equals

public boolean equals​(java.lang.Object obj)
Overrides:
equals in class java.lang.Object
• hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object
• getInputTypeRestriction

public SimpleTypeInformation<? super NumberVector> getInputTypeRestriction()
Description copied from interface: Distance
Get the input data type of the function.
Specified by:
getInputTypeRestriction in interface Distance<NumberVector>
Specified by:
getInputTypeRestriction in interface PrimitiveDistance<NumberVector>
Overrides:
getInputTypeRestriction in class AbstractNumberVectorDistance
Returns:
Type restriction