-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8498330
commit e071d8e
Showing
1 changed file
with
44 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,24 +1,54 @@ | ||
# <p align="center"> RangeSearchAnalysis </p> | ||
## <p align="center"> Algorithm of Analysis individual project #1 - Range searching algorithm </p> | ||
|
||
## Main classes that runds individually. | ||
* Main.java | ||
* Takes integer input based on the input files. If input files are in three dimension, user has to put, for example, [5 10 25] separated by the space(exclude brackets). | ||
* Executes sequential construction and KD-KNN-tree construction based on the input files in data with specified file name. | ||
* If data file for input is empty, CoordinateGen.java execution is required before running Main.java program in order to make arbitrary input files. | ||
|
||
* CoordinateGen.java | ||
|
||
## This project is comprised of three major sections. | ||
|
||
This project is comprised of three major sections. | ||
For every distance calcuation, Euclidean distance is used. | ||
|
||
### 1. Point Generator. | ||
* Generates arbiturary points in incremental order. | ||
* Matrix dimesion determined by users input. | ||
* Matrix starting from 100 * 2 ^ n, where n = 1, 2, 3, 4... (Each of the matrix length is identical) | ||
* Experimental number of points generated 600 * n, where n = 1, 2, 3, 4... | ||
* Each generated points are save in .dat file named like: "POINTS_*MATRIX LENGTH*_*NUMBER OF POINTS*.dat | ||
### 1. Point Generator(**CoordinateGen.java**). | ||
* Generates arbiturary points in random order. | ||
* Matrix dimesion determined by getting users input. | ||
* Matrix point range and number of points grow larger. | ||
* When generated input file name is BIG_DATA_CASE10_20, this means the generated random points have maximum point range from 1 to 10 with number of points of 20. | ||
|
||
### 2. Data structures. | ||
* Sequential structure. | ||
* insert() | ||
* find() | ||
|
||
* KD-Tree Structure. | ||
* insert() | ||
* find() | ||
* Linked List (**SequentialAlgorithm.java**). | ||
* insert(list) | ||
> Append additional coordinate points to the end | ||
* findClosestDistance(targetPoints) | ||
> Visit every node to verify the shortest distance | ||
* KD-Tree (**KDTreeIntegers.java**). | ||
* Class.AxisSort | ||
> comparator that sorts an ArrayList by axis index | ||
* insert(depth, listOfPoints, currentNode, parentNode) | ||
> Builds a binaray-tree like data structure. | ||
* findKDTreeNormal(targetPoints) | ||
> finds a approximately close distance to the targetPoints | ||
* KNN-Search (method in **KDTreeIntegers.java**). | ||
* findKNNAlgorithm(targetPoints, node) | ||
> find closest distance from the targetPoints with the result node from KD-Tree search | ||
### 3. Result exportation. | ||
* All summary data are exported into .cell file. Data contains: | ||
> General cell | ||
>> Numeric value range. | ||
>> Number of points. | ||
>> Desired coordinationto look up. | ||
|
||
> Each cell contains | ||
>> Closest coordinate points found | ||
>> Distance value in double | ||
>> Construction time consumption in nano seconds | ||
>> Search time consumption in nano seconds | ||
|
||
Time is measured by using ProcessTimeRecorder(System.nanoTime). |